dvdemux

dvdemux — Uses libdv to separate DV audio from DV video (libdv.sourceforge.net)

Synopsis

struct              GstDVDemux;

Description

dvdemux splits raw DV into its audio and video components. The audio will be decoded raw samples and the video will be encoded DV video.

This element can operate in both push and pull mode depending on the capabilities of the upstream peer.

Example launch line

1
gst-launch filesrc location=test.dv ! dvdemux name=demux ! queue ! audioconvert ! alsasink demux. ! queue ! dvdec ! xvimagesink
This pipeline decodes and renders the raw DV stream to an audio and a videosink.

Last reviewed on 2006-02-27 (0.10.3)

Synopsis

Element Information

plugin

dv

author

Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim@fluendo.com>

class

Codec/Demuxer

Element Pads

name

sink

direction

sink

presence

always

details

video/x-dv, systemstream=(boolean)true

name

audio

direction

source

presence

sometimes

details

audio/x-raw-int, depth=(int)16, width=(int)16, signed=(boolean)true, channels=(int){ 2, 4 }, endianness=(int)1234, rate=(int){ 32000, 44100, 48000 }

name

video

direction

source

presence

sometimes

details

video/x-dv, systemstream=(boolean)false

Details

struct GstDVDemux

struct GstDVDemux {
  GstElement     element;

  GstPad        *sinkpad;
  GstPad        *videosrcpad;
  GstPad        *audiosrcpad;

  dv_decoder_t  *decoder;

  GstAdapter    *adapter;
  gint           frame_len;

  /* video params */
  gint           framerate_numerator;
  gint           framerate_denominator;
  gint           height;
  gboolean       wide;
  /* audio params */
  gint           frequency;
  gint           channels;

  gint           framecount;
  
  gint64         frame_offset;
  gint64         audio_offset;
  gint64         video_offset;

  GstDVDemuxSeekHandler seek_handler;
  GstSegment     byte_segment;
  GstSegment     time_segment;
  gboolean       running;
  gboolean       need_segment;
  gboolean       new_media;
  int            frames_since_new_media;
  
  gint           found_header; /* ATOMIC */
  GstEvent      *seek_event;
  GstEvent *pending_segment;

  gint16        *audio_buffers[4];
};