summaryrefslogtreecommitdiff
path: root/gst/mxf/mxfaes-bwf.c
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-12-19 10:06:24 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-12-19 10:06:24 +0000
commit083d8c7018484e7da0e50f99c6de7d5ad35dfd6c (patch)
tree8cc0533354a32eb9fdc1ce96b5510e86884b811a /gst/mxf/mxfaes-bwf.c
parentecc0e9221fcfa3f46459b1f9c954298f93f72779 (diff)
downloadgstreamer-plugins-bad-083d8c7018484e7da0e50f99c6de7d5ad35dfd6c.tar.gz
gst/mxf/: Add mxf_metadata_generic_sound_essence_descriptor_set_caps() to set rate and channels and use this for all ...
Original commit message from CVS: * gst/mxf/mxfaes-bwf.c: (mxf_bwf_create_caps), (mxf_aes3_create_caps): * gst/mxf/mxfalaw.c: (mxf_alaw_create_caps): * gst/mxf/mxfd10.c: (mxf_d10_create_caps): * gst/mxf/mxfdemux.c: * gst/mxf/mxfmetadata.c: (mxf_metadata_source_package_resolve), (mxf_metadata_generic_picture_essence_descriptor_set_caps), (mxf_metadata_generic_sound_essence_descriptor_set_caps): * gst/mxf/mxfmetadata.h: * gst/mxf/mxfmpeg.c: (mxf_mpeg_es_create_caps): Add mxf_metadata_generic_sound_essence_descriptor_set_caps() to set rate and channels and use this for all sound essence. Give some debug output when setting picture essence caps with invalid descriptor values. Fix height calculation from the frame layout a bit more and add a TODO to check if it's really correct now or if it needs more fixing (especially, does the framerate need adjustments?).
Diffstat (limited to 'gst/mxf/mxfaes-bwf.c')
-rw-r--r--gst/mxf/mxfaes-bwf.c44
1 files changed, 20 insertions, 24 deletions
diff --git a/gst/mxf/mxfaes-bwf.c b/gst/mxf/mxfaes-bwf.c
index b684c1933..9acdf673c 100644
--- a/gst/mxf/mxfaes-bwf.c
+++ b/gst/mxf/mxfaes-bwf.c
@@ -664,14 +664,13 @@ mxf_bwf_create_caps (MXFMetadataTimelineTrack * track,
descriptor->channel_count) / 8;
ret = gst_caps_new_simple ("audio/x-raw-int",
- "rate", G_TYPE_INT,
- (gint) (((gdouble) descriptor->audio_sampling_rate.n) /
- ((gdouble) descriptor->audio_sampling_rate.d) + 0.5), "channels",
- G_TYPE_INT, descriptor->channel_count, "signed", G_TYPE_BOOLEAN,
+ "signed", G_TYPE_BOOLEAN,
(block_align != 1), "endianness", G_TYPE_INT, G_LITTLE_ENDIAN, "depth",
G_TYPE_INT, (block_align / descriptor->channel_count) * 8, "width",
G_TYPE_INT, (block_align / descriptor->channel_count) * 8, NULL);
+ mxf_metadata_generic_sound_essence_descriptor_set_caps (descriptor, ret);
+
codec_name =
g_strdup_printf ("Uncompressed %u-bit little endian integer PCM audio",
(block_align / descriptor->channel_count) * 8);
@@ -695,14 +694,13 @@ mxf_bwf_create_caps (MXFMetadataTimelineTrack * track,
descriptor->channel_count) / 8;
ret = gst_caps_new_simple ("audio/x-raw-int",
- "rate", G_TYPE_INT,
- (gint) (((gdouble) descriptor->audio_sampling_rate.n) /
- ((gdouble) descriptor->audio_sampling_rate.d) + 0.5), "channels",
- G_TYPE_INT, descriptor->channel_count, "signed", G_TYPE_BOOLEAN,
+ "signed", G_TYPE_BOOLEAN,
(block_align != 1), "endianness", G_TYPE_INT, G_BIG_ENDIAN, "depth",
G_TYPE_INT, (block_align / descriptor->channel_count) * 8, "width",
G_TYPE_INT, (block_align / descriptor->channel_count) * 8, NULL);
+ mxf_metadata_generic_sound_essence_descriptor_set_caps (descriptor, ret);
+
codec_name =
g_strdup_printf ("Uncompressed %u-bit big endian integer PCM audio",
(block_align / descriptor->channel_count) * 8);
@@ -715,10 +713,9 @@ mxf_bwf_create_caps (MXFMetadataTimelineTrack * track,
GST_ERROR ("Invalid descriptor");
return NULL;
}
- ret = gst_caps_new_simple ("audio/x-alaw", "rate", G_TYPE_INT,
- (gint) (((gdouble) descriptor->audio_sampling_rate.n) /
- ((gdouble) descriptor->audio_sampling_rate.d) + 0.5),
- "channels", G_TYPE_INT, descriptor->channel_count);
+ ret = gst_caps_new_simple ("audio/x-alaw", NULL);
+ mxf_metadata_generic_sound_essence_descriptor_set_caps (descriptor, ret);
+
codec_name = g_strdup ("A-law encoded audio");
} else {
GST_ERROR ("Unsupported sound essence compression: %s",
@@ -773,14 +770,13 @@ mxf_aes3_create_caps (MXFMetadataTimelineTrack * track,
descriptor->channel_count) / 8;
ret = gst_caps_new_simple ("audio/x-raw-int",
- "rate", G_TYPE_INT,
- (gint) (((gdouble) descriptor->audio_sampling_rate.n) /
- ((gdouble) descriptor->audio_sampling_rate.d) + 0.5), "channels",
- G_TYPE_INT, descriptor->channel_count, "signed", G_TYPE_BOOLEAN,
+ "signed", G_TYPE_BOOLEAN,
(block_align != 1), "endianness", G_TYPE_INT, G_LITTLE_ENDIAN, "depth",
G_TYPE_INT, (block_align / descriptor->channel_count) * 8, "width",
G_TYPE_INT, (block_align / descriptor->channel_count) * 8, NULL);
+ mxf_metadata_generic_sound_essence_descriptor_set_caps (descriptor, ret);
+
codec_name =
g_strdup_printf ("Uncompressed %u-bit AES3 audio",
(block_align / descriptor->channel_count) * 8);
@@ -816,24 +812,24 @@ mxf_aes_bwf_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags,
if (!track->parent.descriptor[i])
continue;
- if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent.
- descriptor[i])
+ if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->
+ parent.descriptor[i])
&& (track->parent.descriptor[i]->essence_container.u[14] == 0x01
|| track->parent.descriptor[i]->essence_container.u[14] == 0x02
|| track->parent.descriptor[i]->essence_container.u[14] == 0x08)) {
- s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent.
- descriptor[i];
+ s = (MXFMetadataGenericSoundEssenceDescriptor *) track->
+ parent.descriptor[i];
bwf = TRUE;
break;
} else
- if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent.
- descriptor[i])
+ if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->
+ parent.descriptor[i])
&& (track->parent.descriptor[i]->essence_container.u[14] == 0x03
|| track->parent.descriptor[i]->essence_container.u[14] == 0x04
|| track->parent.descriptor[i]->essence_container.u[14] == 0x09)) {
- s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent.
- descriptor[i];
+ s = (MXFMetadataGenericSoundEssenceDescriptor *) track->
+ parent.descriptor[i];
bwf = FALSE;
break;
}