mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 09:10:36 +00:00
audioparsers: refactor code to remove caps fields
This commit is contained in:
parent
a424fb289b
commit
e8313a1e70
7 changed files with 101 additions and 58 deletions
|
@ -1354,6 +1354,19 @@ gst_aac_parse_stop (GstBaseParse * parse)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
remove_fields (GstCaps * caps)
|
||||||
|
{
|
||||||
|
guint i, n;
|
||||||
|
|
||||||
|
n = gst_caps_get_size (caps);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
GstStructure *s = gst_caps_get_structure (caps, i);
|
||||||
|
|
||||||
|
gst_structure_remove_field (s, "framed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_aac_parse_sink_getcaps (GstBaseParse * parse, GstCaps * filter)
|
gst_aac_parse_sink_getcaps (GstBaseParse * parse, GstCaps * filter)
|
||||||
{
|
{
|
||||||
|
@ -1361,18 +1374,12 @@ gst_aac_parse_sink_getcaps (GstBaseParse * parse, GstCaps * filter)
|
||||||
GstCaps *res;
|
GstCaps *res;
|
||||||
|
|
||||||
templ = gst_pad_get_pad_template_caps (GST_BASE_PARSE_SINK_PAD (parse));
|
templ = gst_pad_get_pad_template_caps (GST_BASE_PARSE_SINK_PAD (parse));
|
||||||
|
|
||||||
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
||||||
if (peercaps) {
|
if (peercaps) {
|
||||||
guint i, n;
|
|
||||||
|
|
||||||
/* Remove the framed field */
|
|
||||||
peercaps = gst_caps_make_writable (peercaps);
|
peercaps = gst_caps_make_writable (peercaps);
|
||||||
n = gst_caps_get_size (peercaps);
|
/* Remove the fields we convert */
|
||||||
for (i = 0; i < n; i++) {
|
remove_fields (peercaps);
|
||||||
GstStructure *s = gst_caps_get_structure (peercaps, i);
|
|
||||||
|
|
||||||
gst_structure_remove_field (s, "framed");
|
|
||||||
}
|
|
||||||
|
|
||||||
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
||||||
gst_caps_unref (peercaps);
|
gst_caps_unref (peercaps);
|
||||||
|
|
|
@ -799,6 +799,20 @@ gst_ac3_parse_src_event (GstBaseParse * parse, GstEvent * event)
|
||||||
return GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event);
|
return GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
remove_fields (GstCaps * caps)
|
||||||
|
{
|
||||||
|
guint i, n;
|
||||||
|
|
||||||
|
n = gst_caps_get_size (caps);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
GstStructure *s = gst_caps_get_structure (caps, i);
|
||||||
|
|
||||||
|
gst_structure_remove_field (s, "framed");
|
||||||
|
gst_structure_remove_field (s, "alignment");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_ac3_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
gst_ac3_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
{
|
{
|
||||||
|
@ -809,18 +823,10 @@ gst_ac3_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
||||||
|
|
||||||
if (peercaps) {
|
if (peercaps) {
|
||||||
guint i, n;
|
|
||||||
|
|
||||||
/* Remove the framed and alignment field. We can convert
|
/* Remove the framed and alignment field. We can convert
|
||||||
* between different alignments. */
|
* between different alignments. */
|
||||||
peercaps = gst_caps_make_writable (peercaps);
|
peercaps = gst_caps_make_writable (peercaps);
|
||||||
n = gst_caps_get_size (peercaps);
|
remove_fields (peercaps);
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
GstStructure *s = gst_caps_get_structure (peercaps, i);
|
|
||||||
|
|
||||||
gst_structure_remove_field (s, "framed");
|
|
||||||
gst_structure_remove_field (s, "alignment");
|
|
||||||
}
|
|
||||||
|
|
||||||
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
||||||
gst_caps_unref (peercaps);
|
gst_caps_unref (peercaps);
|
||||||
|
|
|
@ -474,6 +474,19 @@ gst_dca_parse_chain_priv (GstPad * pad, GstObject * parent, GstBuffer * buffer)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
remove_fields (GstCaps * caps)
|
||||||
|
{
|
||||||
|
guint i, n;
|
||||||
|
|
||||||
|
n = gst_caps_get_size (caps);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
GstStructure *s = gst_caps_get_structure (caps, i);
|
||||||
|
|
||||||
|
gst_structure_remove_field (s, "framed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_dca_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
gst_dca_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
{
|
{
|
||||||
|
@ -484,16 +497,9 @@ gst_dca_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
||||||
|
|
||||||
if (peercaps) {
|
if (peercaps) {
|
||||||
guint i, n;
|
|
||||||
|
|
||||||
/* Remove the framed field */
|
/* Remove the framed field */
|
||||||
peercaps = gst_caps_make_writable (peercaps);
|
peercaps = gst_caps_make_writable (peercaps);
|
||||||
n = gst_caps_get_size (peercaps);
|
remove_fields (peercaps);
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
GstStructure *s = gst_caps_get_structure (peercaps, i);
|
|
||||||
|
|
||||||
gst_structure_remove_field (s, "framed");
|
|
||||||
}
|
|
||||||
|
|
||||||
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
||||||
gst_caps_unref (peercaps);
|
gst_caps_unref (peercaps);
|
||||||
|
|
|
@ -1793,6 +1793,19 @@ gst_flac_parse_src_event (GstBaseParse * parse, GstEvent * event)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
remove_fields (GstCaps * caps)
|
||||||
|
{
|
||||||
|
guint i, n;
|
||||||
|
|
||||||
|
n = gst_caps_get_size (caps);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
GstStructure *s = gst_caps_get_structure (caps, i);
|
||||||
|
|
||||||
|
gst_structure_remove_field (s, "framed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_flac_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
gst_flac_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
{
|
{
|
||||||
|
@ -1803,16 +1816,9 @@ gst_flac_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
||||||
|
|
||||||
if (peercaps) {
|
if (peercaps) {
|
||||||
guint i, n;
|
|
||||||
|
|
||||||
/* Remove the framed field */
|
/* Remove the framed field */
|
||||||
peercaps = gst_caps_make_writable (peercaps);
|
peercaps = gst_caps_make_writable (peercaps);
|
||||||
n = gst_caps_get_size (peercaps);
|
remove_fields (peercaps);
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
GstStructure *s = gst_caps_get_structure (peercaps, i);
|
|
||||||
|
|
||||||
gst_structure_remove_field (s, "framed");
|
|
||||||
}
|
|
||||||
|
|
||||||
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
||||||
gst_caps_unref (peercaps);
|
gst_caps_unref (peercaps);
|
||||||
|
|
|
@ -1398,6 +1398,19 @@ gst_mpeg_audio_parse_pre_push_frame (GstBaseParse * parse,
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
remove_fields (GstCaps * caps)
|
||||||
|
{
|
||||||
|
guint i, n;
|
||||||
|
|
||||||
|
n = gst_caps_get_size (caps);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
GstStructure *s = gst_caps_get_structure (caps, i);
|
||||||
|
|
||||||
|
gst_structure_remove_field (s, "parsed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_mpeg_audio_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
gst_mpeg_audio_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
{
|
{
|
||||||
|
@ -1408,16 +1421,9 @@ gst_mpeg_audio_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
||||||
|
|
||||||
if (peercaps) {
|
if (peercaps) {
|
||||||
guint i, n;
|
|
||||||
|
|
||||||
/* Remove the parsed field */
|
/* Remove the parsed field */
|
||||||
peercaps = gst_caps_make_writable (peercaps);
|
peercaps = gst_caps_make_writable (peercaps);
|
||||||
n = gst_caps_get_size (peercaps);
|
remove_fields (peercaps);
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
GstStructure *s = gst_caps_get_structure (peercaps, i);
|
|
||||||
|
|
||||||
gst_structure_remove_field (s, "parsed");
|
|
||||||
}
|
|
||||||
|
|
||||||
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
||||||
gst_caps_unref (peercaps);
|
gst_caps_unref (peercaps);
|
||||||
|
|
|
@ -299,6 +299,19 @@ need_more_data:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
remove_fields (GstCaps * caps)
|
||||||
|
{
|
||||||
|
guint i, n;
|
||||||
|
|
||||||
|
n = gst_caps_get_size (caps);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
GstStructure *s = gst_caps_get_structure (caps, i);
|
||||||
|
|
||||||
|
gst_structure_remove_field (s, "parsed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_sbc_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
gst_sbc_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
{
|
{
|
||||||
|
@ -309,16 +322,9 @@ gst_sbc_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
||||||
|
|
||||||
if (peercaps) {
|
if (peercaps) {
|
||||||
guint i, n;
|
|
||||||
|
|
||||||
/* Remove the parsed field */
|
/* Remove the parsed field */
|
||||||
peercaps = gst_caps_make_writable (peercaps);
|
peercaps = gst_caps_make_writable (peercaps);
|
||||||
n = gst_caps_get_size (peercaps);
|
remove_fields (peercaps);
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
GstStructure *s = gst_caps_get_structure (peercaps, i);
|
|
||||||
|
|
||||||
gst_structure_remove_field (s, "parsed");
|
|
||||||
}
|
|
||||||
|
|
||||||
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
||||||
gst_caps_unref (peercaps);
|
gst_caps_unref (peercaps);
|
||||||
|
|
|
@ -608,6 +608,19 @@ more:
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
remove_fields (GstCaps * caps)
|
||||||
|
{
|
||||||
|
guint i, n;
|
||||||
|
|
||||||
|
n = gst_caps_get_size (caps);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
GstStructure *s = gst_caps_get_structure (caps, i);
|
||||||
|
|
||||||
|
gst_structure_remove_field (s, "framed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_wavpack_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
gst_wavpack_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
{
|
{
|
||||||
|
@ -618,16 +631,9 @@ gst_wavpack_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter)
|
||||||
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), filter);
|
||||||
|
|
||||||
if (peercaps) {
|
if (peercaps) {
|
||||||
guint i, n;
|
|
||||||
|
|
||||||
/* Remove the framed field */
|
/* Remove the framed field */
|
||||||
peercaps = gst_caps_make_writable (peercaps);
|
peercaps = gst_caps_make_writable (peercaps);
|
||||||
n = gst_caps_get_size (peercaps);
|
remove_fields (peercaps);
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
GstStructure *s = gst_caps_get_structure (peercaps, i);
|
|
||||||
|
|
||||||
gst_structure_remove_field (s, "framed");
|
|
||||||
}
|
|
||||||
|
|
||||||
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
res = gst_caps_intersect_full (peercaps, templ, GST_CAPS_INTERSECT_FIRST);
|
||||||
gst_caps_unref (peercaps);
|
gst_caps_unref (peercaps);
|
||||||
|
|
Loading…
Reference in a new issue