diff -r ce823be21819 -r 761a8bbe4278 gst-plugins-nuvdemux/src/gstnuvdemux.h --- a/gst-plugins-nuvdemux/src/gstnuvdemux.h Thu Nov 09 19:12:55 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,198 +0,0 @@ -/* GStreamer - * Copyright (C) <2006> Renato Araujo Oliveira Filho - * Rosfran Borges - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GST_NUV_DEMUX_H__ -#define __GST_NUV_DEMUX_H__ - -#include - -#include - -G_BEGIN_DECLS - -#define GST_TYPE_NUV_DEMUX \ - (gst_nuv_demux_get_type ()) -#define GST_NUV_DEMUX(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_NUV_DEMUX, GstNuvDemux)) -#define GST_NUV_DEMUX_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_NUV_DEMUX, GstNuvDemuxClass)) -#define GST_IS_NUV_DEMUX(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_NUV_DEMUX)) -#define GST_IS_NUV_DEMUX_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_NUV_DEMUX)) - -#define DEMUX_INDEX_SIZE_MAX (100000) - -/* Indexes (timecodes/offsets) conversion structures */ -typedef struct -{ - gint64 i_time; - gint64 i_offset; - -} nuv_demux_index_entry; - -typedef struct -{ - gint i_idx; - gint i_idx_max; - - nuv_demux_index_entry idx[DEMUX_INDEX_SIZE_MAX]; -} nuv_demux_index; - -/* */ -typedef struct -{ - gchar id[12]; /* "NuppelVideo\0" or "MythTVVideo\0" */ - gchar version[5]; /* "x.xx\0" */ - - gint i_width; - gint i_height; - gint i_width_desired; - gint i_height_desired; - - gchar i_mode; /* P progressive, I interlaced */ - - gdouble d_aspect; /* 1.0 squared pixel */ - gdouble d_fps; - - gint i_video_blocks; /* 0 no video, -1 unknown */ - gint i_audio_blocks; - gint i_text_blocks; - - gint i_keyframe_distance; - -} nuv_header; - -typedef struct -{ - gchar i_type; /* A: audio, V: video, S: sync; T: test - R: Seekpoint (string:RTjjjjjjjj) - D: Extra data for codec */ - gchar i_compression; /* V: 0 uncompressed - 1 RTJpeg - 2 RTJpeg+lzo - N black frame - L copy last - A: 0 uncompressed (44100 1-bits, 2ch) - 1 lzo - 2 layer 2 - 3 layer 3 - F flac - S shorten - N null frame loudless - L copy last - S: B audio and vdeo sync point - A audio sync info (timecode == effective - dsp frequency*100) - V next video sync (timecode == next video - frame num) - S audio,video,text correlation */ - gchar i_keyframe; /* 0 keyframe, else no no key frame */ - guint8 i_filters; /* 0x01: gauss 5 pixel (8,2,2,2,2)/16 - 0x02: gauss 5 pixel (8,1,1,1,1)/12 - 0x04: cartoon filter */ - - gint32 i_timecode; /* ms */ - - gint i_length; /* V,A,T: length of following data - S: length of packet correl */ -} nuv_frame_header; - -/* FIXME Not sure of this one */ -typedef struct -{ - gint i_version; - guint32 i_video_fcc; - - guint32 i_audio_fcc; - gint i_audio_sample_rate; - gint i_audio_bits_per_sample; - gint i_audio_channels; - gint i_audio_compression_ratio; - gint i_audio_quality; - gint i_rtjpeg_quality; - gint i_rtjpeg_luma_filter; - gint i_rtjpeg_chroma_filter; - gint i_lavc_bitrate; - gint i_lavc_qmin; - gint i_lavc_qmax; - gint i_lavc_maxqdiff; - gint64 i_seekable_offset; - gint64 i_keyframe_adjust_offset; - -} nuv_extended_header; - -typedef enum { - GST_NUV_DEMUX_START, - GST_NUV_DEMUX_HEADER_DATA, - GST_NUV_DEMUX_EXTRA_DATA, - GST_NUV_DEMUX_MPEG_DATA, - GST_NUV_DEMUX_EXTEND_HEADER, - GST_NUV_DEMUX_EXTEND_HEADER_DATA, - GST_NUV_DEMUX_FRAME_HEADER, - GST_NUV_DEMUX_MOVI, - GST_NUV_DEMUX_INVALID_DATA -} GstNuvDemuxState; - -typedef struct _GstNuvDemux { - GstElement parent; - - guint mode; - GstAdapter *adapter; - guint64 video_offset; - guint64 audio_offset; - - /* pads */ - - GstPad *sinkpad; - GstPad *src_video_pad; - GstPad *src_audio_pad; - gboolean first_video; - gboolean first_audio; - - /* NUV decoding state */ - GstNuvDemuxState state; - guint64 offset; - - /* Mpeg ExtraData */ - guint64 mpeg_data_size; - GstBuffer *mpeg_buffer; - - nuv_header *h; - nuv_extended_header *eh; - nuv_frame_header *fh; - - /* index */ - nuv_demux_index *index_entries; - guint index_size; - guint64 index_offset; - guint current_entry; - -} GstNuvDemux; - -typedef struct _GstNuvDemuxClass { - GstElementClass parent_class; -} GstNuvDemuxClass; - -GType gst_nuv_demux_get_type (void); - -G_END_DECLS - -#endif /* __GST_NUV_DEMUX_H__ */