Hi, On Mon, Apr 01, 2013 at 01:26:54PM +0200, Guido Günther wrote: > Hi, > On Mon, Mar 11, 2013 at 09:40:22AM +0100, Guido Günther wrote: > > --- > > Tested with totem as well as gst-launch. Any chance this can be applied > > to http://git.linuxtv.org/jarod/crystalhd.git? > > Any chance this gets applied. Ping? It would really be nice to have a gstreamer 1.0 version. Cheers, -- Guido > > > Cheers, > > -- Guido > > > > filters/gst/gst-plugin/configure.ac | 8 +- > > filters/gst/gst-plugin/src/gstbcmdec.c | 431 ++++++++++++++++---------------- > > filters/gst/gst-plugin/src/gstbcmdec.h | 68 ++--- > > 3 files changed, 248 insertions(+), 259 deletions(-) > > > > diff --git a/filters/gst/gst-plugin/configure.ac b/filters/gst/gst-plugin/configure.ac > > index 99b3713..a3c6467 100644 > > --- a/filters/gst/gst-plugin/configure.ac > > +++ b/filters/gst/gst-plugin/configure.ac > > @@ -1,9 +1,9 @@ > > AC_INIT > > > > dnl versions of gstreamer and plugins-base > > -GST_MAJORMINOR=0.10 > > -GST_REQUIRED=0.10.0 > > -GSTPB_REQUIRED=0.10.0 > > +GST_MAJORMINOR=1.0 > > +GST_REQUIRED=1.0 > > +GSTPB_REQUIRED=1.0 > > > > dnl fill in your package name and version here > > dnl the fourth (nano) number should be 0 for a release, 1 for CVS, > > @@ -56,7 +56,7 @@ dnl And we can also ask for the right version of gstreamer > > > > PKG_CHECK_MODULES(GST, \ > > gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED > > - gstreamer-video-0.10, > > + gstreamer-video-1.0, > > HAVE_GST=yes,HAVE_GST=no) > > > > dnl Give error and exit if we don't have gstreamer > > diff --git a/filters/gst/gst-plugin/src/gstbcmdec.c b/filters/gst/gst-plugin/src/gstbcmdec.c > > index ed01c14..a51bd59 100644 > > --- a/filters/gst/gst-plugin/src/gstbcmdec.c > > +++ b/filters/gst/gst-plugin/src/gstbcmdec.c > > @@ -8,6 +8,7 @@ > > * AU > > * > > * HISTORY: > > + * Updated for 1.0 by Guido Guenther <agx@xxxxxxxxxxx> > > * > > ******************************************************************* > > * > > @@ -40,6 +41,7 @@ > > #include <glib.h> > > #include <gst/base/gstadapter.h> > > #include <gst/video/video.h> > > +#include <gst/video/gstvideopool.h> > > > > #ifdef HAVE_CONFIG_H > > #include <config.h> > > @@ -51,8 +53,8 @@ > > #include "parse.h" > > #include "gstbcmdec.h" > > > > -GST_DEBUG_CATEGORY_STATIC (gst_bcmdec_debug); > > -#define GST_CAT_DEFAULT gst_bcmdec_debug > > +GST_DEBUG_CATEGORY_STATIC (gst_bcm_dec_debug); > > +#define GST_CAT_DEFAULT gst_bcm_dec_debug > > > > //#define YV12__ > > > > @@ -64,16 +66,18 @@ static GstFlowReturn bcmdec_send_buff_detect_error(GstBcmDec *bcmdec, GstBuffer > > guint8 flags) > > { > > BC_STATUS sts = BC_STS_SUCCESS; > > + GstMapInfo info; > > > > GST_DEBUG_OBJECT(bcmdec, "Attempting to Send Buffer"); > > > > sts = decif_send_buffer(&bcmdec->decif, pbuffer, size, tCurrent, flags); > > > > if (sts != BC_STS_SUCCESS) { > > + gst_buffer_map(buf, &info, GST_MAP_READ); > > GST_ERROR_OBJECT(bcmdec, "proc input failed sts = %d", sts); > > GST_ERROR_OBJECT(bcmdec, "Chain: timeStamp = %llu size = %d data = %p", > > - GST_BUFFER_TIMESTAMP(buf), GST_BUFFER_SIZE(buf), > > - GST_BUFFER_DATA (buf)); > > + GST_BUFFER_DTS(buf), info.size, info.data); > > + gst_buffer_unmap(buf, &info); > > return GST_FLOW_ERROR; > > } > > > > @@ -92,7 +96,7 @@ enum { > > }; > > > > > > -GLB_INST_STS *g_inst_sts = NULL; > > +static GLB_INST_STS *g_inst_sts = NULL; > > > > /* > > * the capabilities of the inputs and outputs. > > @@ -111,35 +115,29 @@ GstStaticPadTemplate sink_factory_bcm70012 = GST_STATIC_PAD_TEMPLATE("sink", GST > > > > #ifdef YV12__ > > static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE("src", GST_PAD_SRC, GST_PAD_ALWAYS, > > - GST_STATIC_CAPS("video/x-raw-yuv, " "format = (fourcc) { YV12 }, " "width = (int) [ 1, MAX ], " > > + GST_STATIC_CAPS("video/x-raw, " "format = (string) { YV12 }, " "width = (int) [ 1, MAX ], " > > "height = (int) [ 1, MAX ], " "framerate = (fraction) [ 0/1, 2147483647/1 ]")); > > #define BUF_MULT (12 / 8) > > #define BUF_MODE MODE420 > > #else > > static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE("src", GST_PAD_SRC, GST_PAD_ALWAYS, > > - GST_STATIC_CAPS("video/x-raw-yuv, " "format = (fourcc) { YUY2 } , " "framerate = (fraction) [0,MAX], " > > - "width = (int) [1,MAX], " "height = (int) [1,MAX]; " "video/x-raw-yuv, " > > - "format = (fourcc) { UYVY } , " "framerate = (fraction) [0,MAX], " "width = (int) [1,MAX], " > > + GST_STATIC_CAPS("video/x-raw, " "format = (string) { YUY2 } , " "framerate = (fraction) [0,MAX], " > > + "width = (int) [1,MAX], " "height = (int) [1,MAX]; " "video/x-raw, " > > + "format = (string) { UYVY } , " "framerate = (fraction) [0,MAX], " "width = (int) [1,MAX], " > > "height = (int) [1,MAX]; ")); > > #define BUF_MULT (16 / 8) > > #define BUF_MODE MODE422_YUY2 > > #endif > > > > -GST_BOILERPLATE(GstBcmDec, gst_bcmdec, GstElement, GST_TYPE_ELEMENT); > > +G_DEFINE_TYPE(GstBcmDec, gst_bcm_dec, GST_TYPE_ELEMENT); > > > > /* GObject vmethod implementations */ > > > > -static void gst_bcmdec_base_init(gpointer gclass) > > +static void gst_bcm_dec_base_init(gpointer gclass) > > { > > - static GstElementDetails element_details; > > BC_HW_CAPS hwCaps; > > > > - GST_DEBUG_OBJECT(gclass, "gst_bcmdec_base_init"); > > - > > - element_details.klass = (gchar *)"Codec/Decoder/Video"; > > - element_details.longname = (gchar *)"Generic Video Decoder"; > > - element_details.description = (gchar *)"Decodes various Video Formats using CrystalHD Decoders"; > > - element_details.author = (gchar *)"Broadcom Corp."; > > + GST_DEBUG_OBJECT(gclass, "gst_bcm_dec_base_init"); > > > > GstElementClass *element_class = GST_ELEMENT_CLASS(gclass); > > > > @@ -153,11 +151,15 @@ static void gst_bcmdec_base_init(gpointer gclass) > > } > > else > > gst_element_class_add_pad_template(element_class, gst_static_pad_template_get (&sink_factory_bcm70012)); > > - gst_element_class_set_details(element_class, &element_details); > > + gst_element_class_set_metadata(element_class, > > + "Codec/Decoder/Video", > > + "Generic Video Decoder", > > + "Decodes various Video Formats using CrystalHD Decoders", > > + "Broadcom Corp."); > > } > > > > /* initialize the bcmdec's class */ > > -static void gst_bcmdec_class_init(GstBcmDecClass *klass) > > +static void gst_bcm_dec_class_init(GstBcmDecClass *klass) > > { > > GObjectClass *gobject_class; > > GstElementClass *gstelement_class; > > @@ -165,13 +167,15 @@ static void gst_bcmdec_class_init(GstBcmDecClass *klass) > > gobject_class = (GObjectClass *)klass; > > gstelement_class = (GstElementClass *)klass; > > > > - GST_DEBUG_OBJECT(klass, "gst_bcmdec_class_init"); > > + GST_DEBUG_OBJECT(klass, "gst_bcm_dec_class_init"); > > + > > + gst_bcm_dec_base_init(klass); > > > > - gstelement_class->change_state = gst_bcmdec_change_state; > > + gstelement_class->change_state = gst_bcm_dec_change_state; > > > > - gobject_class->set_property = gst_bcmdec_set_property; > > - gobject_class->get_property = gst_bcmdec_get_property; > > - gobject_class->finalize = gst_bcmdec_finalize; > > + gobject_class->set_property = gst_bcm_dec_set_property; > > + gobject_class->get_property = gst_bcm_dec_get_property; > > + gobject_class->finalize = gst_bcm_dec_finalize; > > > > g_object_class_install_property(gobject_class, PROP_SILENT, > > g_param_spec_boolean("silent", "Silent", > > @@ -185,14 +189,14 @@ static void gst_bcmdec_class_init(GstBcmDecClass *klass) > > * set pad calback functions > > * initialize instance structure > > */ > > -static void gst_bcmdec_init(GstBcmDec *bcmdec, GstBcmDecClass *gclass) > > +static void gst_bcm_dec_init(GstBcmDec *bcmdec) > > { > > pid_t pid; > > BC_STATUS sts = BC_STS_SUCCESS; > > int shmid = 0; > > BC_HW_CAPS hwCaps; > > > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_init"); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_init"); > > > > bcmdec_reset(bcmdec); > > > > @@ -204,17 +208,16 @@ static void gst_bcmdec_init(GstBcmDec *bcmdec, GstBcmDecClass *gclass) > > else > > bcmdec->sinkpad = gst_pad_new_from_static_template(&sink_factory_bcm70012, "sink"); > > > > - gst_pad_set_event_function(bcmdec->sinkpad, GST_DEBUG_FUNCPTR(gst_bcmdec_sink_event)); > > + gst_pad_set_event_function(bcmdec->sinkpad, > > + GST_DEBUG_FUNCPTR(gst_bcm_dec_sink_event)); > > > > - gst_pad_set_setcaps_function(bcmdec->sinkpad, GST_DEBUG_FUNCPTR(gst_bcmdec_sink_set_caps)); > > - gst_pad_set_getcaps_function(bcmdec->sinkpad, GST_DEBUG_FUNCPTR(gst_bcmdec_getcaps)); > > - gst_pad_set_chain_function(bcmdec->sinkpad, GST_DEBUG_FUNCPTR(gst_bcmdec_chain)); > > + gst_pad_set_chain_function(bcmdec->sinkpad, > > + GST_DEBUG_FUNCPTR(gst_bcm_dec_chain)); > > > > bcmdec->srcpad = gst_pad_new_from_static_template (&src_factory, "src"); > > > > - gst_pad_set_getcaps_function(bcmdec->srcpad, GST_DEBUG_FUNCPTR(gst_bcmdec_getcaps)); > > - > > - gst_pad_set_event_function(bcmdec->srcpad, GST_DEBUG_FUNCPTR(gst_bcmdec_src_event)); > > + gst_pad_set_event_function(bcmdec->srcpad, > > + GST_DEBUG_FUNCPTR(gst_bcm_dec_src_event)); > > > > gst_pad_use_fixed_caps(bcmdec->srcpad); > > bcmdec_negotiate_format(bcmdec); > > @@ -223,7 +226,7 @@ static void gst_bcmdec_init(GstBcmDec *bcmdec, GstBcmDecClass *gclass) > > gst_element_add_pad(GST_ELEMENT(bcmdec), bcmdec->srcpad); > > bcmdec->silent = FALSE; > > pid = getpid(); > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_init _-- PID = %x",pid); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_init _-- PID = %x",pid); > > > > sts = bcmdec_create_shmem(bcmdec, &shmid); > > > > @@ -231,25 +234,25 @@ static void gst_bcmdec_init(GstBcmDec *bcmdec, GstBcmDecClass *gclass) > > } > > > > /* plugin close function*/ > > -static void gst_bcmdec_finalize(GObject *object) > > +static void gst_bcm_dec_finalize(GObject *object) > > { > > - GstBcmDec *bcmdec = GST_BCMDEC(object); > > + GstBcmDec *bcmdec = GST_BCM_DEC(object); > > > > bcmdec_del_shmem(bcmdec); > > - /*gst_bcmdec_cleanup(bcmdec);*/ > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_finalize"); > > - G_OBJECT_CLASS(parent_class)->finalize(object); > > + /*gst_bcm_dec_cleanup(bcmdec);*/ > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_finalize"); > > + G_OBJECT_CLASS(gst_bcm_dec_parent_class)->finalize(object); > > } > > > > -static void gst_bcmdec_set_property(GObject *object, guint prop_id, > > +static void gst_bcm_dec_set_property(GObject *object, guint prop_id, > > const GValue *value, GParamSpec *pspec) > > { > > - GstBcmDec *bcmdec = GST_BCMDEC(object); > > + GstBcmDec *bcmdec = GST_BCM_DEC(object); > > > > switch (prop_id) { > > case PROP_SILENT: > > bcmdec->silent = g_value_get_boolean (value); > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_set_property PROP_SILENT"); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_set_property PROP_SILENT"); > > break; > > default: > > G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); > > @@ -257,18 +260,18 @@ static void gst_bcmdec_set_property(GObject *object, guint prop_id, > > } > > > > if (!bcmdec->silent) > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_set_property"); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_set_property"); > > } > > > > -static void gst_bcmdec_get_property(GObject *object, guint prop_id, > > +static void gst_bcm_dec_get_property(GObject *object, guint prop_id, > > GValue *value, GParamSpec *pspec) > > { > > - GstBcmDec *bcmdec = GST_BCMDEC(object); > > + GstBcmDec *bcmdec = GST_BCM_DEC(object); > > > > switch (prop_id) { > > case PROP_SILENT: > > g_value_set_boolean (value, bcmdec->silent); > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_get_property PROP_SILENT"); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_get_property PROP_SILENT"); > > break; > > default: > > G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); > > @@ -276,27 +279,33 @@ static void gst_bcmdec_get_property(GObject *object, guint prop_id, > > } > > > > if (!bcmdec->silent) > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_get_property"); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_get_property"); > > } > > > > /* GstElement vmethod implementations */ > > -static gboolean gst_bcmdec_sink_event(GstPad* pad, GstEvent* event) > > +static gboolean gst_bcm_dec_sink_event(GstPad* pad, > > + GstObject* parent, > > + GstEvent* event) > > { > > GstBcmDec *bcmdec; > > BC_STATUS sts = BC_STS_SUCCESS; > > - bcmdec = GST_BCMDEC(gst_pad_get_parent(pad)); > > + bcmdec = GST_BCM_DEC(gst_pad_get_parent(pad)); > > > > gboolean result = TRUE; > > > > switch (GST_EVENT_TYPE(event)) { > > - case GST_EVENT_NEWSEGMENT: > > - GstFormat newsegment_format; > > - gint64 newsegment_start; > > + case GST_EVENT_CAPS: > > + GstCaps *caps; > > + gst_event_parse_caps (event, &caps); > > + result = gst_bcm_dec_sink_set_caps (pad, caps); > > + break; > > + > > + case GST_EVENT_SEGMENT: > > + const GstSegment *newsegment; > > > > - gst_event_parse_new_segment(event, NULL, NULL, &newsegment_format, > > - &newsegment_start, NULL, NULL); > > + gst_event_parse_segment(event, &newsegment); > > > > - bcmdec->base_clock_time = newsegment_start; > > + bcmdec->base_clock_time = newsegment->start; > > bcmdec->cur_stream_time = 0; > > > > if (!bcmdec->silent) > > @@ -356,30 +365,24 @@ static gboolean gst_bcmdec_sink_event(GstPad* pad, GstEvent* event) > > > > gst_object_unref(bcmdec); > > if (!bcmdec->silent) > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_sink_event %u", GST_EVENT_TYPE(event)); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_sink_event %u", GST_EVENT_TYPE(event)); > > return result; > > } > > > > -static GstCaps *gst_bcmdec_getcaps (GstPad * pad) > > -{ > > - return gst_caps_copy (gst_pad_get_pad_template_caps (pad)); > > -} > > - > > /* this function handles the link with other elements */ > > -static gboolean gst_bcmdec_sink_set_caps(GstPad *pad, GstCaps *caps) > > +static gboolean gst_bcm_dec_sink_set_caps(GstPad *pad, GstCaps *caps) > > { > > GstBcmDec *bcmdec; > > - bcmdec = GST_BCMDEC(gst_pad_get_parent(pad)); > > + bcmdec = GST_BCM_DEC(gst_pad_get_parent(pad)); > > GstStructure *structure; > > + GstMapInfo info; > > GstCaps *intersection; > > const gchar *mime; > > guint num = 0; > > guint den = 0; > > const GValue *g_value; > > int version = 0; > > - GstBuffer *buffer; > > - guint8 *data; > > - guint size; > > + GstBuffer *buffer = NULL; > > guint index; > > > > GST_DEBUG_OBJECT (pad, "setcaps called"); > > @@ -484,53 +487,66 @@ static gboolean gst_bcmdec_sink_set_caps(GstPad *pad, GstCaps *caps) > > GST_DEBUG_OBJECT(bcmdec, "InFmt H.264 (AVC1)"); > > > > buffer = gst_value_get_buffer(g_value); > > - data = GST_BUFFER_DATA(buffer); > > - size = GST_BUFFER_SIZE(buffer); > > - > > - GST_DEBUG_OBJECT(bcmdec, "codec_data size = %d", size); > > + if(!gst_buffer_map(buffer, > > + &info, > > + GST_MAP_READ)) > > + goto map_error; > > + GST_DEBUG_OBJECT(bcmdec, > > + "codec_data size = %d", > > + info.size); > > > > /* parse the avcC data */ > > - if (size < 7) { > > - GST_ERROR_OBJECT(bcmdec, "avcC size %u < 7", size); > > - goto avcc_error; > > + if (info.size < 7) { > > + GST_ERROR_OBJECT(bcmdec, > > + "avcC size %u < 7", > > + info.size); > > + goto out; > > } > > /* parse the version, this must be 1 */ > > - if (data[0] != 1) > > - goto wrong_version; > > + if (info.data[0] != 1) { > > + GST_ERROR_OBJECT(bcmdec, "wrong avcC version"); > > + goto out; > > + } > > > > if (bcmdec->codec_params.sps_pps_buf == NULL) > > - bcmdec->codec_params.sps_pps_buf = (guint8 *)malloc(size * 2); > > - if (bcmdec_insert_sps_pps(bcmdec, buffer) != BC_STS_SUCCESS) { > > + bcmdec->codec_params.sps_pps_buf = (guint8 *)malloc(info.size * 2); > > + if (bcmdec_insert_sps_pps(bcmdec, &info) != BC_STS_SUCCESS) { > > bcmdec->codec_params.pps_size = 0; > > } > > } else if (!strcmp("video/x-wmv", mime)) { > > - buffer = gst_value_get_buffer(g_value); > > - data = GST_BUFFER_DATA(buffer); > > - size = GST_BUFFER_SIZE(buffer); > > - > > - GST_DEBUG_OBJECT(bcmdec, "codec_data size = %d", size); > > - if (size == 4) { > > + buffer = gst_value_get_buffer(g_value); > > + if(!gst_buffer_map(buffer, > > + &info, > > + GST_MAP_READ)) > > + goto map_error; > > + > > + GST_DEBUG_OBJECT(bcmdec, > > + "codec_data size = %d", > > + info.size); > > + if (info.size == 4) { > > // Simple or Main Profile > > bcmdec->input_format = BC_MSUBTYPE_WMV3; > > GST_DEBUG_OBJECT(bcmdec, "InFmt VC-1 (SP/MP)"); > > if (bcmdec->codec_params.sps_pps_buf == NULL) > > bcmdec->codec_params.sps_pps_buf = (guint8 *)malloc(4); > > - memcpy(bcmdec->codec_params.sps_pps_buf, data, 4); > > + memcpy(bcmdec->codec_params.sps_pps_buf, > > + info.data, 4); > > bcmdec->codec_params.pps_size = 4; > > } else { > > bcmdec->input_format = BC_MSUBTYPE_VC1; > > GST_DEBUG_OBJECT(bcmdec, "InFmt VC-1 (AP)"); > > - for (index = 0; index < size; index++) { > > - data += index; > > - if (((size - index) >= 4) && (*data == 0x00) && (*(data + 1) == 0x00) && > > - (*(data + 2) == 0x01) && (*(data + 3) == 0x0f)) { > > + for (index = 0; index < info.size; > > + index++) { > > + info.data += index; > > + if (((info.size - index) >= 4) && (*info.data == 0x00) && (*(info.data + 1) == 0x00) && > > + (*(info.data + 2) == 0x01) && (*(info.data + 3) == 0x0f)) { > > GST_DEBUG_OBJECT(bcmdec, "VC1 Sequence Header Found for Adv Profile"); > > > > - if ((size - index + 1) > MAX_ADV_PROF_SEQ_HDR_SZ) > > + if ((info.size - index + 1) > MAX_ADV_PROF_SEQ_HDR_SZ) > > bcmdec->codec_params.pps_size = MAX_ADV_PROF_SEQ_HDR_SZ; > > else > > - bcmdec->codec_params.pps_size = size - index + 1; > > - memcpy(bcmdec->codec_params.sps_pps_buf, data, bcmdec->codec_params.pps_size); > > + bcmdec->codec_params.pps_size = info.size - index + 1; > > + memcpy(bcmdec->codec_params.sps_pps_buf, info.data, bcmdec->codec_params.pps_size); > > break; > > } > > } > > @@ -546,16 +562,16 @@ static gboolean gst_bcmdec_sink_set_caps(GstPad *pad, GstCaps *caps) > > } else { > > // No Codec data. So try with FourCC for VC1/WMV9 > > if (!strcmp("video/x-wmv", mime)) { > > - guint32 fourcc; > > - if (gst_structure_get_fourcc (structure, "format", &fourcc)) { > > - if ((fourcc == GST_MAKE_FOURCC ('W', 'V', 'C', '1')) || > > - (fourcc == GST_MAKE_FOURCC ('W', 'M', 'V', 'A'))) { > > + if (gst_structure_has_field (structure, "format")) { > > + const char* fourcc = gst_structure_get_string(structure, "format"); > > + > > + if (!g_strcmp0(fourcc, "WVC1") || > > + !g_strcmp0(fourcc, "WMVA")) { > > bcmdec->input_format = BC_MSUBTYPE_VC1; > > GST_DEBUG_OBJECT(bcmdec, "InFmt VC-1 (AP)"); > > } else { > > GST_DEBUG_OBJECT(bcmdec, "no codec_data. Don't know how to handle"); > > - gst_object_unref(bcmdec); > > - return FALSE; > > + goto out; > > } > > } > > } > > @@ -570,8 +586,7 @@ static gboolean gst_bcmdec_sink_set_caps(GstPad *pad, GstCaps *caps) > > } > > else { > > GST_DEBUG_OBJECT(bcmdec, "no codec_data. Don't know how to handle"); > > - gst_object_unref(bcmdec); > > - return FALSE; > > + goto out; > > } > > } > > } > > @@ -581,54 +596,40 @@ static gboolean gst_bcmdec_sink_set_caps(GstPad *pad, GstCaps *caps) > > bcmdec_process_play(bcmdec); > > } > > > > + gst_buffer_unmap(buffer, &info); > > gst_object_unref(bcmdec); > > > > return TRUE; > > > > /* ERRORS */ > > -avcc_error: > > - { > > - gst_object_unref(bcmdec); > > - return FALSE; > > - } > > - > > -wrong_version: > > - { > > - GST_ERROR_OBJECT(bcmdec, "wrong avcC version"); > > - gst_object_unref(bcmdec); > > - return FALSE; > > - } > > -} > > - > > -void bcmdec_msleep(gint msec) > > -{ > > - gint cnt = msec; > > - > > - while (cnt) { > > - usleep(1000); > > - cnt--; > > - } > > +out: > > + if (buffer) > > + gst_buffer_unmap(buffer, &info); > > +map_error: > > + gst_object_unref(bcmdec); > > + return FALSE; > > } > > > > /* > > * chain function > > * this function does the actual processing > > */ > > -static GstFlowReturn gst_bcmdec_chain(GstPad *pad, GstBuffer *buf) > > +static GstFlowReturn gst_bcm_dec_chain(GstPad *pad, > > + GstObject *parent, > > + GstBuffer *buf) > > { > > GstBcmDec *bcmdec; > > -// BC_STATUS sts = BC_STS_SUCCESS; > > + GstMapInfo info; > > guint32 offset = 0; > > GstClockTime tCurrent = 0; > > guint8 *pbuffer; > > guint32 size = 0; > > -// guint32 vc1_buff_sz = 0; > > - > > + GstFlowReturn ret; > > > > #ifdef FILE_DUMP__ > > guint32 bytes_written =0; > > #endif > > - bcmdec = GST_BCMDEC (GST_OBJECT_PARENT (pad)); > > + bcmdec = GST_BCM_DEC (GST_OBJECT_PARENT (pad)); > > > > #ifdef FILE_DUMP__ > > if (bcmdec->fhnd == NULL) > > @@ -637,8 +638,8 @@ static GstFlowReturn gst_bcmdec_chain(GstPad *pad, GstBuffer *buf) > > > > if (bcmdec->flushing) { > > GST_DEBUG_OBJECT(bcmdec, "input while flushing"); > > - gst_buffer_unref(buf); > > - return GST_FLOW_OK; > > + ret = GST_FLOW_OK; > > + goto out; > > } > > > > if (GST_CLOCK_TIME_NONE != GST_BUFFER_TIMESTAMP(buf)) { > > @@ -654,32 +655,44 @@ static GstFlowReturn gst_bcmdec_chain(GstPad *pad, GstBuffer *buf) > > bcmdec_process_play(bcmdec); > > } else if (!bcmdec->streaming) { > > GST_DEBUG_OBJECT(bcmdec, "input while streaming is false"); > > - gst_buffer_unref(buf); > > - return GST_FLOW_WRONG_STATE; > > + ret = GST_FLOW_FLUSHING; > > + goto out; > > } > > > > - pbuffer = GST_BUFFER_DATA (buf); > > - size = GST_BUFFER_SIZE(buf); > > + if (!gst_buffer_map(buf, &info, GST_MAP_READ)) { > > + ret = GST_FLOW_ERROR; > > + goto out; > > + } > > + pbuffer = info.data; > > + size = info.size; > > > > + /* FIXME: better send mapinfo? */ > > if (GST_FLOW_OK != bcmdec_send_buff_detect_error(bcmdec, buf, pbuffer, size, offset, tCurrent, bcmdec->proc_in_flags)) { > > - gst_buffer_unref(buf); > > - return GST_FLOW_ERROR; > > + ret = GST_FLOW_ERROR; > > + goto unmapout; > > } > > > > #ifdef FILE_DUMP__ > > bytes_written = fwrite(GST_BUFFER_DATA(buf), sizeof(unsigned char), GST_BUFFER_SIZE(buf), bcmdec->fhnd); > > #endif > > > > + ret = GST_FLOW_OK; > > + > > +unmapout: > > + gst_buffer_unmap(buf, &info); > > +out: > > gst_buffer_unref(buf); > > - return GST_FLOW_OK; > > + return ret; > > } > > > > -static gboolean gst_bcmdec_src_event(GstPad *pad, GstEvent *event) > > +static gboolean gst_bcm_dec_src_event(GstPad *pad, > > + GstObject *parent, > > + GstEvent *event) > > { > > gboolean result; > > GstBcmDec *bcmdec; > > > > - bcmdec = GST_BCMDEC(GST_OBJECT_PARENT(pad)); > > + bcmdec = GST_BCM_DEC(GST_OBJECT_PARENT(pad)); > > > > result = gst_pad_push_event(bcmdec->sinkpad, event); > > > > @@ -695,6 +708,7 @@ static gboolean bcmdec_negotiate_format(GstBcmDec *bcmdec) > > GstStructure *s1; > > const GValue *framerate_value; > > GstVideoFormat vidFmt; > > + GstVideoInfo info; > > > > #ifdef YV12__ > > vidFmt = GST_VIDEO_FORMAT_YV12; > > @@ -703,21 +717,21 @@ static gboolean bcmdec_negotiate_format(GstBcmDec *bcmdec) > > #endif > > GST_DEBUG_OBJECT(bcmdec, "framerate = %f", bcmdec->output_params.framerate); > > > > - if(bcmdec->interlace) { > > - caps = gst_video_format_new_caps_interlaced(vidFmt, bcmdec->output_params.width, > > - bcmdec->output_params.height, num, den, > > - bcmdec->output_params.aspectratio_x, > > - bcmdec->output_params.aspectratio_y, > > - TRUE); > > - } else { > > - caps = gst_video_format_new_caps(vidFmt, bcmdec->output_params.width, > > - bcmdec->output_params.height, num, den, > > - bcmdec->output_params.aspectratio_x, > > - bcmdec->output_params.aspectratio_y); > > - } > > - > > + gst_video_info_init (&info); > > + gst_video_info_set_format (&info, > > + vidFmt, > > + bcmdec->output_params.width, > > + bcmdec->output_params.height); > > + info.fps_n = num; > > + info.fps_d = den; > > + info.par_n = bcmdec->output_params.aspectratio_x; > > + info.par_d = bcmdec->output_params.aspectratio_y; > > + info.interlace_mode = bcmdec->interlace ? > > + GST_VIDEO_INTERLACE_MODE_INTERLEAVED : > > + GST_VIDEO_INTERLACE_MODE_PROGRESSIVE; > > + caps = gst_video_info_to_caps (&info); > > result = gst_pad_set_caps(bcmdec->srcpad, caps); > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_negotiate_format %d", result); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_negotiate_format %d", result); > > > > if (bcmdec->output_params.clr_space == MODE422_YUY2) { > > bcmdec->output_params.y_size = bcmdec->output_params.width * bcmdec->output_params.height * BUF_MULT; > > @@ -842,10 +856,10 @@ static gboolean bcmdec_process_play(GstBcmDec *bcmdec) > > return TRUE; > > } > > > > -static GstStateChangeReturn gst_bcmdec_change_state(GstElement *element, GstStateChange transition) > > +static GstStateChangeReturn gst_bcm_dec_change_state(GstElement *element, GstStateChange transition) > > { > > GstStateChangeReturn result = GST_STATE_CHANGE_SUCCESS; > > - GstBcmDec *bcmdec = GST_BCMDEC(element); > > + GstBcmDec *bcmdec = GST_BCM_DEC(element); > > BC_STATUS sts = BC_STS_SUCCESS; > > int ret = 0; > > > > @@ -960,7 +974,7 @@ static GstStateChangeReturn gst_bcmdec_change_state(GstElement *element, GstStat > > GST_DEBUG_OBJECT(bcmdec, "default %d", transition); > > break; > > } > > - result = GST_ELEMENT_CLASS(parent_class)->change_state(element, transition); > > + result = GST_ELEMENT_CLASS(gst_bcm_dec_parent_class)->change_state(element, transition); > > if (result == GST_STATE_CHANGE_FAILURE) { > > GST_ERROR_OBJECT(bcmdec, "parent class state change failed"); > > return result; > > @@ -968,7 +982,7 @@ static GstStateChangeReturn gst_bcmdec_change_state(GstElement *element, GstStat > > > > if(transition == GST_STATE_CHANGE_READY_TO_NULL) { > > GST_DEBUG_OBJECT(bcmdec, "GST_STATE_CHANGE_READY_TO_NULL"); > > - sts = gst_bcmdec_cleanup(bcmdec); > > + sts = gst_bcm_dec_cleanup(bcmdec); > > if (sts == BC_STS_SUCCESS) > > GST_DEBUG_OBJECT(bcmdec, "dev close success"); > > else > > @@ -978,38 +992,26 @@ static GstStateChangeReturn gst_bcmdec_change_state(GstElement *element, GstStat > > return result; > > } > > > > - > > -GstClockTime gst_get_current_timex (void) > > -{ > > - GTimeVal tv; > > - > > - g_get_current_time(&tv); > > - return GST_TIMEVAL_TO_TIME(tv); > > -} > > - > > -clock_t bcm_get_tick_count() > > -{ > > - tms tm; > > - return times(&tm); > > -} > > - > > -static gboolean bcmdec_get_buffer(GstBcmDec *bcmdec, GstBuffer **obuf) > > +static gboolean bcmdec_get_buffer(GstBcmDec *bcmdec, > > + gint size, > > + GstBuffer **obuf) > > { > > GstFlowReturn ret; > > - GST_DEBUG_OBJECT(bcmdec, "gst_pad_alloc_buffer_and_set_caps "); > > + GST_DEBUG_OBJECT(bcmdec, "%s", __func__); > > > > - ret = gst_pad_alloc_buffer_and_set_caps(bcmdec->srcpad, > > - GST_BUFFER_OFFSET_NONE, > > - bcmdec->output_params.width * bcmdec->output_params.height * BUF_MULT, > > - GST_PAD_CAPS (bcmdec->srcpad), obuf); > > - if (ret != GST_FLOW_OK) { > > + *obuf = gst_buffer_new_allocate (NULL, > > + size, > > + NULL); > > + > > + if (obuf == NULL) { > > GST_ERROR_OBJECT(bcmdec, "gst_pad_alloc_buffer_and_set_caps failed %d ",ret); > > return FALSE; > > } > > > > +#if 0 > > if (((uintptr_t)GST_BUFFER_DATA(*obuf)) % 4) > > GST_DEBUG_OBJECT(bcmdec, "buf is not aligned"); > > - > > +#endif > > return TRUE; > > } > > > > @@ -1382,6 +1384,7 @@ static void * bcmdec_process_output(void *ctx) > > GstClockTime cur_stream_time_diff = 0; > > int wait_cnt = 0; > > guint32 nextPicNumFlags = 0; > > + GstMapInfo info; > > > > gboolean is_paused = FALSE; > > > > @@ -1427,7 +1430,8 @@ static void * bcmdec_process_output(void *ctx) > > guint8* data_ptr; > > if (gstbuf == NULL) { > > if (!bcmdec->rbuf_thread_running) { > > - if (!bcmdec_get_buffer(bcmdec, &gstbuf)) { > > + gint size = bcmdec->output_params.width * bcmdec->output_params.height * BUF_MULT; > > + if (!bcmdec_get_buffer(bcmdec, size, &gstbuf)) { > > usleep(30 * 1000); > > continue; > > } > > @@ -1460,9 +1464,16 @@ static void * bcmdec_process_output(void *ctx) > > else > > GST_DEBUG_OBJECT(bcmdec, "re-using rbuf, going to proc output"); > > > > - data_ptr = GST_BUFFER_DATA(gstbuf); > > - > > + if(!gst_buffer_map(gstbuf, > > + &info, > > + GST_MAP_WRITE)) { > > + GST_ERROR_OBJECT(bcmdec, "Failed to map buffer"); > > + continue; > > + } > > + data_ptr = info.data; > > bcmdec_init_procout(bcmdec, &pout, data_ptr); > > + gst_buffer_unmap(gstbuf, &info); > > + > > rx_flush = TRUE; > > pout.PicInfo.picture_number = 0; > > // For interlaced content, if I am holding a buffer but the next buffer is not from the same picture > > @@ -1473,7 +1484,7 @@ static void * bcmdec_process_output(void *ctx) > > if(pic_number == 0) > > gst_buffer_unref(gstbuf); > > else if (gst_queue_element) { > > - GST_BUFFER_FLAG_SET(gstbuf, GST_VIDEO_BUFFER_ONEFIELD); > > + GST_BUFFER_FLAG_SET(gstbuf, GST_VIDEO_BUFFER_FLAG_ONEFIELD); > > gst_queue_element->gstbuf = gstbuf; > > bcmdec_ins_buf(bcmdec, gst_queue_element); > > bcmdec->prev_pic = pic_number; > > @@ -1489,7 +1500,7 @@ static void * bcmdec_process_output(void *ctx) > > } > > if (bEOS) { > > if (gstbuf) { > > - gst_buffer_unref(gstbuf); > > + gst_buffer_unref(gstbuf); > > gstbuf = NULL; > > } > > if (gst_queue_element) { > > @@ -1561,14 +1572,6 @@ static void * bcmdec_process_output(void *ctx) > > GST_DEBUG_OBJECT(bcmdec, "LOST PICTURE pic_no = %d, prev = %d", pic_number, bcmdec->prev_pic); > > } > > > > -/* if ((bcmdec->prev_pic == pic_number) && (bcmdec->ses_nbr == pout.PicInfo.sess_num) && !bcmdec->interlace) { > > - if (!bcmdec->silent) > > - GST_DEBUG_OBJECT(bcmdec, "rp"); > > - > > - if (!(pout.PicInfo.flags & VDEC_FLAG_LAST_PICTURE)) > > - continue; > > - }*/ > > - > > if (!bcmdec->interlace || bcmdec->sec_field) { > > GST_DEBUG_OBJECT(bcmdec, "Progressive or Second Field"); > > GST_BUFFER_OFFSET(gstbuf) = 0; > > @@ -1597,13 +1600,11 @@ static void * bcmdec_process_output(void *ctx) > > } > > } > > > > - GST_BUFFER_SIZE(gstbuf) = bcmdec->output_params.width * bcmdec->output_params.height * BUF_MULT; > > - > > if (!bcmdec->interlace || bcmdec->sec_field) { > > if (gst_queue_element) { > > // If interlaced, set the GST_VIDEO_BUFFER_TFF flags > > if(bcmdec->sec_field) > > - GST_BUFFER_FLAG_SET(gstbuf, GST_VIDEO_BUFFER_TFF); > > + GST_BUFFER_FLAG_SET(gstbuf, GST_VIDEO_BUFFER_FLAG_TFF); > > gst_queue_element->gstbuf = gstbuf; > > bcmdec_ins_buf(bcmdec, gst_queue_element); > > bcmdec->prev_pic = pic_number; > > @@ -1674,7 +1675,7 @@ static void * bcmdec_process_output(void *ctx) > > } > > if (rx_flush) { > > if (!bcmdec->flushing) { > > -// GST_DEBUG_OBJECT(bcmdec, "DtsFlushRxCapture called"); > > + GST_DEBUG_OBJECT(bcmdec, "DtsFlushRxCapture called"); > > // sts = decif_flush_rxbuf(&bcmdec->decif, FALSE); > > // if (sts != BC_STS_SUCCESS) > > // GST_DEBUG_OBJECT(bcmdec, "DtsFlushRxCapture failed"); > > @@ -1880,11 +1881,11 @@ static void bcmdec_process_flush_start(GstBcmDec *bcmdec) > > GST_ERROR_OBJECT(bcmdec, "flush_dec failed sts %d", sts); > > } > > > > -static BC_STATUS gst_bcmdec_cleanup(GstBcmDec *bcmdec) > > +static BC_STATUS gst_bcm_dec_cleanup(GstBcmDec *bcmdec) > > { > > BC_STATUS sts = BC_STS_SUCCESS; > > > > - GST_DEBUG_OBJECT(bcmdec, "gst_bcmdec_cleanup - enter"); > > + GST_DEBUG_OBJECT(bcmdec, "gst_bcm_dec_cleanup - enter"); > > bcmdec->streaming = FALSE; > > > > bcmdec_release_mem_buf_que_pool(bcmdec); > > @@ -2117,11 +2118,11 @@ static GSTBUF_LIST * bcmdec_rem_buf(GstBcmDec *bcmdec) > > return temp; > > } > > > > -static BC_STATUS bcmdec_insert_sps_pps(GstBcmDec *bcmdec, GstBuffer* gstbuf) > > +static BC_STATUS bcmdec_insert_sps_pps(GstBcmDec *bcmdec, GstMapInfo* info) > > { > > BC_STATUS sts = BC_STS_SUCCESS; > > - guint8 *data = GST_BUFFER_DATA(gstbuf); > > - guint32 data_size = GST_BUFFER_SIZE(gstbuf); > > + guint8 *data = info->data; > > + guint32 data_size = info->size; > > gint profile; > > guint nal_size; > > guint num_sps, num_pps, i; > > @@ -2436,7 +2437,6 @@ static void * bcmdec_process_get_rbuf(void *ctx) > > > > while (bcmdec->streaming && get_buf_start) > > { > > - //GST_DEBUG_OBJECT(bcmdec, "process get rbuf start...."); > > gstbuf = NULL; > > > > if (!bcmdec->recv_thread && !bcmdec->streaming) { > > @@ -2446,9 +2446,8 @@ static void * bcmdec_process_get_rbuf(void *ctx) > > break; > > } > > > > - // If we have enough buffers from the renderer then don't get any more > > if(bcmdec->gst_padbuf_que_cnt >= GST_RENDERER_BUF_POOL_SZ) { > > - usleep(100 * 1000); > > + usleep(100 * 1000); /* we have enought buffers from the renderer */ > > GST_DEBUG_OBJECT(bcmdec, "SLEEPING because we have enough buffers"); > > continue; > > } > > @@ -2467,13 +2466,10 @@ static void * bcmdec_process_get_rbuf(void *ctx) > > bufSz = bcmdec->output_params.width * bcmdec->output_params.height * BUF_MULT; > > > > GST_DEBUG_OBJECT(bcmdec, "process get rbuf gst_pad_alloc_buffer_and_set_caps ...."); > > - ret = gst_pad_alloc_buffer_and_set_caps(bcmdec->srcpad, GST_BUFFER_OFFSET_NONE, > > - bufSz, GST_PAD_CAPS(bcmdec->srcpad), &gstbuf); > > - if (ret != GST_FLOW_OK) { > > - if (!bcmdec->silent) > > - GST_ERROR_OBJECT(bcmdec, "gst_pad_alloc_buffer_and_set_caps failed %d ",ret); > > - usleep(30 * 1000); > > - continue; > > + if (!bcmdec_get_buffer(bcmdec, bufSz, &gstbuf)) { > > + GST_ERROR_OBJECT(bcmdec, "gst_pad_alloc_buffer_and_set_caps failed %d ",ret); > > + usleep(30 * 1000); > > + continue; > > } > > > > GST_DEBUG_OBJECT(bcmdec, "Got GST Buf RCnt:%d", bcmdec->gst_padbuf_que_cnt); > > @@ -2501,9 +2497,6 @@ static gboolean bcmdec_start_get_rbuf_thread(GstBcmDec *bcmdec) > > gint ret = 0; > > pthread_attr_t thread_attr; > > > > -// if (!bcmdec_alloc_mem_rbuf_que_pool(bcmdec)) > > -// GST_ERROR_OBJECT(bcmdec, "rend pool alloc failed/n"); > > - > > bcmdec->gst_padbuf_que_hd = bcmdec->gst_padbuf_que_tl = NULL; > > > > ret = sem_init(&bcmdec->rbuf_ins_event, 0, 0); > > @@ -2658,18 +2651,14 @@ static GSTBUF_LIST *bcmdec_rem_padbuf(GstBcmDec *bcmdec) > > */ > > static gboolean plugin_init(GstPlugin *bcmdec) > > { > > - //printf("BcmDec_init"); > > - > > /* > > * debug category for fltering log messages > > - * > > - * exchange the string 'Template bcmdec' with your description > > */ > > - GST_DEBUG_CATEGORY_INIT(gst_bcmdec_debug, "bcmdec", 0, "Broadcom video decoder"); > > + GST_DEBUG_CATEGORY_INIT(gst_bcm_dec_debug, "bcmdec", 0, "Broadcom video decoder"); > > > > - return gst_element_register(bcmdec, "bcmdec", GST_BCMDEC_RANK, GST_TYPE_BCMDEC); > > + return gst_element_register(bcmdec, "bcmdec", GST_BCM_DEC_RANK, GST_TYPE_BCM_DEC); > > } > > > > /* gstreamer looks for this structure to register bcmdec */ > > -GST_PLUGIN_DEFINE(GST_VERSION_MAJOR, GST_VERSION_MINOR, "bcmdec", "Video decoder", plugin_init, VERSION, "LGPL", "bcmdec", "http://broadcom.com/") > > +GST_PLUGIN_DEFINE(GST_VERSION_MAJOR, GST_VERSION_MINOR, bcmdec, "Video decoder", plugin_init, VERSION, "LGPL", "bcmdec", "http://broadcom.com/") > > > > diff --git a/filters/gst/gst-plugin/src/gstbcmdec.h b/filters/gst/gst-plugin/src/gstbcmdec.h > > index 6e5b100..5c02c8a 100644 > > --- a/filters/gst/gst-plugin/src/gstbcmdec.h > > +++ b/filters/gst/gst-plugin/src/gstbcmdec.h > > @@ -23,11 +23,11 @@ > > * along with this library. If not, see <http://www.gnu.org/licenses/>. > > * > > *******************************************************************/ > > -#ifndef __GST_BCMDEC_H__ > > -#define __GST_BCMDEC_H__ > > +#ifndef __GST_BCM_DEC_H__ > > +#define __GST_BCM_DEC_H__ > > > > > > -#define GST_BCMDEC_RANK 0xffff > > +#define GST_BCM_DEC_RANK 0xffff > > > > #define CLOCK_BASE 9LL > > #define CLOC_FREQ_CLOC_BASE * 10000 > > @@ -127,16 +127,16 @@ typedef struct { > > > > G_BEGIN_DECLS > > > > -#define GST_TYPE_BCMDEC \ > > - (gst_bcmdec_get_type()) > > -#define GST_BCMDEC(obj) \ > > - (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BCMDEC,GstBcmDec)) > > -#define GST_BCMDEC_CLASS(klass) \ > > - (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BCMDEC,GstBcmDecClass)) > > -#define GST_IS_BCMDEC(obj) \ > > - (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BCMDEC)) > > -#define GST_IS_BCMDEC_CLASS(klass) \ > > - (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BCMDEC)) > > +#define GST_TYPE_BCM_DEC \ > > + (gst_bcm_dec_get_type()) > > +#define GST_BCM_DEC(obj) \ > > + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BCM_DEC,GstBcmDec)) > > +#define GST_BCM_DEC_CLASS(klass) \ > > + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BCM_DEC,GstBcmDecClass)) > > +#define GST_IS_BCM_DEC(obj) \ > > + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BCM_DEC)) > > +#define GST_IS_BCM_DEC_CLASS(klass) \ > > + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BCM_DEC)) > > > > typedef struct _GstBcmDec GstBcmDec; > > typedef struct _GstBcmDecClass GstBcmDecClass; > > @@ -188,7 +188,7 @@ struct _GstBcmDec > > > > gboolean flushing; > > sem_t push_stop_event; > > - sem_t push_start_event; > > + sem_t push_start_event; > > sem_t recv_stop_event; > > guint ses_nbr; > > gboolean insert_pps; > > @@ -233,49 +233,50 @@ struct _GstBcmDecClass > > GstElementClass parent_class; > > }; > > > > -GType gst_bcmdec_get_type (void); > > +GType gst_bcm_dec_get_type (void); > > > > static void > > -gst_bcmdec_base_init (gpointer gclass); > > +gst_bcm_dec_base_init (gpointer gclass); > > > > static void > > -gst_bcmdec_class_init(GstBcmDecClass * klass); > > +gst_bcm_dec_class_init(GstBcmDecClass * klass); > > > > static void > > -gst_bcmdec_init(GstBcmDec * bcmdec, > > - GstBcmDecClass * gclass); > > +gst_bcm_dec_init(GstBcmDec * bcmdec); > > + > > > > static void > > -gst_bcmdec_finalize(GObject * object); > > +gst_bcm_dec_finalize(GObject * object); > > > > static GstFlowReturn > > -gst_bcmdec_chain(GstPad * pad, > > +gst_bcm_dec_chain(GstPad * pad, > > + GstObject * parent, > > GstBuffer * buffer); > > > > static GstStateChangeReturn > > -gst_bcmdec_change_state(GstElement * element, > > +gst_bcm_dec_change_state(GstElement * element, > > GstStateChange transition); > > > > static gboolean > > -gst_bcmdec_sink_set_caps(GstPad * pad, > > +gst_bcm_dec_sink_set_caps(GstPad * pad, > > GstCaps * caps); > > > > -static GstCaps *gst_bcmdec_getcaps (GstPad * pad); > > - > > static gboolean > > -gst_bcmdec_src_event(GstPad * pad, > > +gst_bcm_dec_src_event(GstPad * pad, > > + GstObject * parent, > > GstEvent * event); > > > > static gboolean > > -gst_bcmdec_sink_event(GstPad * pad, > > +gst_bcm_dec_sink_event(GstPad * pad, > > + GstObject * parent, > > GstEvent * event); > > > > static void > > -gst_bcmdec_set_property (GObject * object, guint prop_id, > > +gst_bcm_dec_set_property (GObject * object, guint prop_id, > > const GValue * value, GParamSpec * pspec); > > > > static void > > -gst_bcmdec_get_property (GObject * object, guint prop_id, > > +gst_bcm_dec_get_property (GObject * object, guint prop_id, > > GValue * value, GParamSpec * pspec); > > > > static gboolean > > @@ -285,7 +286,7 @@ static void > > bcmdec_reset(GstBcmDec * bcmdec); > > > > static gboolean > > -bcmdec_get_buffer(GstBcmDec * bcmdec, GstBuffer ** obuf); > > +bcmdec_get_buffer(GstBcmDec * bcmdec, gint size, GstBuffer ** obuf); > > > > static void* > > bcmdec_process_output(void * ctx); > > @@ -300,7 +301,7 @@ static gboolean > > bcmdec_format_change(GstBcmDec * filter,BC_PIC_INFO_BLOCK* pic_info); > > > > static BC_STATUS > > -gst_bcmdec_cleanup(GstBcmDec *filter); > > +gst_bcm_dec_cleanup(GstBcmDec *filter); > > > > static gboolean > > bcmdec_start_recv_thread(GstBcmDec * bcmdec); > > @@ -339,7 +340,7 @@ bcmdec_start_push_thread(GstBcmDec * bcmdec); > > //bcmdec_insert_startcode(GstBcmDec* filter,GstBuffer* gstbuf, guint8* dest_buf,guint32* sz); > > > > static BC_STATUS > > -bcmdec_insert_sps_pps(GstBcmDec* filter,GstBuffer* gstbuf); > > +bcmdec_insert_sps_pps(GstBcmDec* filter, GstMapInfo* gstbuf); > > > > static void > > bcmdec_set_aspect_ratio(GstBcmDec *filter,BC_PIC_INFO_BLOCK* pic_info); > > @@ -383,7 +384,6 @@ bcmdec_ins_padbuf(GstBcmDec *filter,GSTBUF_LIST *gst_queue_element); > > static GSTBUF_LIST* > > bcmdec_rem_padbuf(GstBcmDec *filter); > > > > - > > G_END_DECLS > > > > -#endif /* __GST_BCMDEC_H__ */ > > +#endif /* __GST_BCM_DEC_H__ */ > > -- > > 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html