From ab6e49e9cc398dcd27a39776fb7bdfe4889cb8e8 Mon Sep 17 00:00:00 2001 From: Mart Raudsepp Date: Mon, 24 Jun 2019 14:28:39 +0300 Subject: [PATCH] audioparsers: add back segment clipping to parsers that have lost it The pre_push_frame default clipping behaviour was introduced in 2010 with commit 30be03004e82 and modified with commit 4163969a2422 in 2011, when most parsers didn't implement a pre_push_frame yet. Not having it meant that clipping was done by default. Those that did implement a pre_push_frame (flacparse and mpegaudioparse) at the time, had the flag adjusted as part of the 2011 refactor work. All other parsers got a pre_push_frame vfunc implementation only in 2013, but seem to have forgot to keep the clipping behaviour, as was done automatically when a pre_push_frame implementation doesn't exist for the parser. aacparse lost it with commit 91d4abcea in July 2013; the others in Dec 2013 as part of AUDIO_CODEC tag posting in commits 6f89b430e, d2ab5199b, 29f2cae12, 753d3c23a and 292780574. --- gst/audioparsers/gstaacparse.c | 2 ++ gst/audioparsers/gstac3parse.c | 2 ++ gst/audioparsers/gstamrparse.c | 2 ++ gst/audioparsers/gstdcaparse.c | 2 ++ gst/audioparsers/gstsbcparse.c | 2 ++ gst/audioparsers/gstwavpackparse.c | 2 ++ 6 files changed, 12 insertions(+) diff --git a/gst/audioparsers/gstaacparse.c b/gst/audioparsers/gstaacparse.c index 0d4bf84d70..42ef9811cd 100644 --- a/gst/audioparsers/gstaacparse.c +++ b/gst/audioparsers/gstaacparse.c @@ -1480,6 +1480,8 @@ gst_aac_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame) gst_buffer_get_size (frame->out_buffer) - header_size); } + frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP; + return GST_FLOW_OK; } diff --git a/gst/audioparsers/gstac3parse.c b/gst/audioparsers/gstac3parse.c index 0c4cbe61a0..d797aa0c70 100644 --- a/gst/audioparsers/gstac3parse.c +++ b/gst/audioparsers/gstac3parse.c @@ -808,6 +808,8 @@ gst_ac3_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame) ac3parse->sent_codec_tag = TRUE; } + frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP; + return GST_FLOW_OK; } diff --git a/gst/audioparsers/gstamrparse.c b/gst/audioparsers/gstamrparse.c index 2b62777360..190f7070fb 100644 --- a/gst/audioparsers/gstamrparse.c +++ b/gst/audioparsers/gstamrparse.c @@ -448,5 +448,7 @@ gst_amr_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame) amrparse->sent_codec_tag = TRUE; } + frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP; + return GST_FLOW_OK; } diff --git a/gst/audioparsers/gstdcaparse.c b/gst/audioparsers/gstdcaparse.c index 0d06f539a9..fd7c1f00aa 100644 --- a/gst/audioparsers/gstdcaparse.c +++ b/gst/audioparsers/gstdcaparse.c @@ -613,5 +613,7 @@ gst_dca_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame) dcaparse->sent_codec_tag = TRUE; } + frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP; + return GST_FLOW_OK; } diff --git a/gst/audioparsers/gstsbcparse.c b/gst/audioparsers/gstsbcparse.c index fd521f86be..494f9cb2fe 100644 --- a/gst/audioparsers/gstsbcparse.c +++ b/gst/audioparsers/gstsbcparse.c @@ -530,5 +530,7 @@ gst_sbc_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame) sbcparse->sent_codec_tag = TRUE; } + frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP; + return GST_FLOW_OK; } diff --git a/gst/audioparsers/gstwavpackparse.c b/gst/audioparsers/gstwavpackparse.c index df0e2236ab..3e37f8aff4 100644 --- a/gst/audioparsers/gstwavpackparse.c +++ b/gst/audioparsers/gstwavpackparse.c @@ -704,5 +704,7 @@ gst_wavpack_parse_pre_push_frame (GstBaseParse * parse, wavpackparse->sent_codec_tag = TRUE; } + frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP; + return GST_FLOW_OK; }