[0.11] gst-ffmpeg: ffmpeg: port to new channel mapping
Wim Taymans
wtay at kemper.freedesktop.org
Thu Jan 5 05:06:50 PST 2012
Module: gst-ffmpeg
Branch: 0.11
Commit: fc0d9bd2430dd53eaf8f403b685516ada5e0d4aa
URL: http://cgit.freedesktop.org/gstreamer/gst-ffmpeg/commit/?id=fc0d9bd2430dd53eaf8f403b685516ada5e0d4aa
Author: Wim Taymans <wim.taymans at collabora.co.uk>
Date: Thu Jan 5 14:06:33 2012 +0100
ffmpeg: port to new channel mapping
---
ext/ffmpeg/gstffmpegcodecmap.c | 18 ++++++++++++++----
ext/ffmpeg/gstffmpegcodecmap.h | 1 -
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/ext/ffmpeg/gstffmpegcodecmap.c b/ext/ffmpeg/gstffmpegcodecmap.c
index 5acd990..e4f5210 100644
--- a/ext/ffmpeg/gstffmpegcodecmap.c
+++ b/ext/ffmpeg/gstffmpegcodecmap.c
@@ -83,7 +83,7 @@ static const struct
CH_FRONT_LEFT, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT}, {
CH_FRONT_RIGHT, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}, {
CH_FRONT_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER}, {
- CH_LOW_FREQUENCY, GST_AUDIO_CHANNEL_POSITION_LFE}, {
+ CH_LOW_FREQUENCY, GST_AUDIO_CHANNEL_POSITION_LFE1}, {
CH_BACK_LEFT, GST_AUDIO_CHANNEL_POSITION_REAR_LEFT}, {
CH_BACK_RIGHT, GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT}, {
CH_FRONT_LEFT_OF_CENTER, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER}, {
@@ -142,7 +142,8 @@ gst_ff_channel_layout_to_gst (guint64 channel_layout, guint channels)
none_layout = TRUE;
}
- if (!none_layout && !gst_audio_check_channel_positions (pos, nchannels)) {
+ if (!none_layout
+ && !gst_audio_check_valid_channel_positions (pos, nchannels, TRUE)) {
GST_ERROR ("Invalid channel layout %" G_GUINT64_FORMAT
" - assuming NONE layout", channel_layout);
none_layout = TRUE;
@@ -150,7 +151,7 @@ gst_ff_channel_layout_to_gst (guint64 channel_layout, guint channels)
if (none_layout) {
if (nchannels == 1) {
- pos[0] = GST_AUDIO_CHANNEL_POSITION_FRONT_MONO;
+ pos[0] = GST_AUDIO_CHANNEL_POSITION_MONO;
} else if (nchannels == 2) {
pos[0] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
pos[1] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
@@ -338,9 +339,13 @@ gst_ff_aud_caps_new (AVCodecContext * context, enum CodecID codec_id,
/* fixed, non-probing context */
if (context != NULL && context->channels != -1) {
+ GstAudioInfo info;
GstAudioChannelPosition *pos;
guint64 channel_layout = context->channel_layout;
+ gst_audio_info_init (&info);
+
+
if (channel_layout == 0) {
const guint64 default_channel_set[] = {
0, 0, CH_LAYOUT_SURROUND, CH_LAYOUT_QUAD, CH_LAYOUT_5POINT0,
@@ -366,7 +371,12 @@ gst_ff_aud_caps_new (AVCodecContext * context, enum CodecID codec_id,
pos = gst_ff_channel_layout_to_gst (channel_layout, context->channels);
if (pos != NULL) {
- gst_audio_set_channel_positions (gst_caps_get_structure (caps, 0), pos);
+ guint64 mask;
+
+ if (gst_audio_channel_positions_to_mask (pos, context->channels, &mask)) {
+ gst_caps_set_simple (caps, "channel-mask", GST_TYPE_BITMASK, &mask,
+ NULL);
+ }
g_free (pos);
}
} else {
diff --git a/ext/ffmpeg/gstffmpegcodecmap.h b/ext/ffmpeg/gstffmpegcodecmap.h
index a19dbd9..164c5e4 100644
--- a/ext/ffmpeg/gstffmpegcodecmap.h
+++ b/ext/ffmpeg/gstffmpegcodecmap.h
@@ -28,7 +28,6 @@
#include <gst/gst.h>
#include <gst/video/video.h>
-#include <gst/audio/multichannel.h>
/*
* _codecid_to_caps () gets the GstCaps that belongs to
More information about the gstreamer-commits
mailing list