From ec23bc276899076a4cddaac3c0cbc8465140936d Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Wed, 23 Mar 2011 22:02:37 +0530 Subject: [PATCH] dcaparse: Expose frame size in caps This exports the size of the frame (number of bytes from one sync point to the next) as the "frame_size" field in caps. --- gst/audioparsers/gstdcaparse.c | 8 ++++++-- gst/audioparsers/gstdcaparse.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gst/audioparsers/gstdcaparse.c b/gst/audioparsers/gstdcaparse.c index c393c50a10..7e478e47dd 100644 --- a/gst/audioparsers/gstdcaparse.c +++ b/gst/audioparsers/gstdcaparse.c @@ -121,6 +121,7 @@ gst_dca_parse_reset (GstDcaParse * dcaparse) dcaparse->depth = -1; dcaparse->endianness = -1; dcaparse->block_size = -1; + dcaparse->frame_size = -1; dcaparse->last_sync = 0; } @@ -414,14 +415,16 @@ gst_dca_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame) if (G_UNLIKELY (dcaparse->rate != rate || dcaparse->channels != chans || dcaparse->depth != depth || dcaparse->endianness != endianness - || (!terminator && dcaparse->block_size != block_size))) { + || (!terminator && dcaparse->block_size != block_size) + || (size != dcaparse->frame_size))) { GstCaps *caps; caps = gst_caps_new_simple ("audio/x-dts", "framed", G_TYPE_BOOLEAN, TRUE, "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, chans, "endianness", G_TYPE_INT, endianness, "depth", G_TYPE_INT, depth, - "block-size", G_TYPE_INT, block_size, NULL); + "block-size", G_TYPE_INT, block_size, "frame-size", G_TYPE_INT, size, + NULL); gst_buffer_set_caps (buf, caps); gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (parse), caps); gst_caps_unref (caps); @@ -431,6 +434,7 @@ gst_dca_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame) dcaparse->depth = depth; dcaparse->endianness = endianness; dcaparse->block_size = block_size; + dcaparse->frame_size = size; gst_base_parse_set_frame_props (parse, rate, block_size, 0, 0); } diff --git a/gst/audioparsers/gstdcaparse.h b/gst/audioparsers/gstdcaparse.h index ca8838c7a1..eefc2526c6 100644 --- a/gst/audioparsers/gstdcaparse.h +++ b/gst/audioparsers/gstdcaparse.h @@ -56,6 +56,7 @@ struct _GstDcaParse { gint depth; gint endianness; gint block_size; + gint frame_size; guint32 last_sync; };