mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-30 11:08:34 +00:00
avcodecmap: Add special mapping for mono channel layouts
In ffmpeg this is the same as FRONT_CENTER, but we distinguish between FRONT_CENTER and MONO in GStreamer. Add an explicit mapping for this special case in the translations functions. https://bugzilla.gnome.org/show_bug.cgi?id=759846
This commit is contained in:
parent
ae27b9c503
commit
8e466b73d8
1 changed files with 12 additions and 0 deletions
|
@ -99,6 +99,9 @@ gst_ffmpeg_channel_positions_to_layout (GstAudioChannelPosition * pos,
|
||||||
if (!pos)
|
if (!pos)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (channels == 1 && pos[0] == GST_AUDIO_CHANNEL_POSITION_MONO)
|
||||||
|
return AV_CH_LAYOUT_MONO;
|
||||||
|
|
||||||
for (i = 0; i < channels; i++) {
|
for (i = 0; i < channels; i++) {
|
||||||
for (j = 0; j < G_N_ELEMENTS (_ff_to_gst_layout); j++) {
|
for (j = 0; j < G_N_ELEMENTS (_ff_to_gst_layout); j++) {
|
||||||
if (_ff_to_gst_layout[j].gst == pos[i]) {
|
if (_ff_to_gst_layout[j].gst == pos[i]) {
|
||||||
|
@ -127,6 +130,15 @@ gst_ffmpeg_channel_layout_to_gst (guint64 channel_layout, gint channels,
|
||||||
} else {
|
} else {
|
||||||
guint i, j;
|
guint i, j;
|
||||||
|
|
||||||
|
/* Special path for mono, as AV_CH_LAYOUT_MONO is the same
|
||||||
|
* as FRONT_CENTER but we distinguish between the two in
|
||||||
|
* GStreamer
|
||||||
|
*/
|
||||||
|
if (channels == 1 && channel_layout == AV_CH_LAYOUT_MONO) {
|
||||||
|
pos[0] = GST_AUDIO_CHANNEL_POSITION_MONO;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < 64; i++) {
|
for (i = 0; i < 64; i++) {
|
||||||
if ((channel_layout & (G_GUINT64_CONSTANT (1) << i)) != 0) {
|
if ((channel_layout & (G_GUINT64_CONSTANT (1) << i)) != 0) {
|
||||||
nchannels++;
|
nchannels++;
|
||||||
|
|
Loading…
Reference in a new issue