LINUX.ORG.RU

История изменений

Исправление fopen, (текущая версия) :

Да. Фигня.

CustomChannelMapLocation - это раскладка на уровне кодека, а «[Parsed_aresample_0 @ 0x1cd1910]» - уровень фильтра.

channel_layout.c:
static const struct {
    const char *name;
    int         nb_channels;
    uint64_t     layout;
} channel_layout_map[] = {
...
    { "5.1(side)",   6,  AV_CH_LAYOUT_5POINT1 },
...

channel_layout.h:
#define AV_CH_LAYOUT_5POINT1           (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY)
#define AV_CH_LAYOUT_5POINT0           (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
#define AV_CH_LAYOUT_SURROUND          (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER)
#define AV_CH_LAYOUT_STEREO            (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)

#define AV_CH_FRONT_LEFT             0x00000001
#define AV_CH_FRONT_RIGHT            0x00000002
#define AV_CH_FRONT_CENTER           0x00000004
#define AV_CH_LOW_FREQUENCY          0x00000008
#define AV_CH_SIDE_LEFT              0x00000200
#define AV_CH_SIDE_RIGHT             0x00000400

Т. о. левый канал:

0.414214 * FRONT_LEFT + 0.292893 * FRONT_CENTER + 0.292893 * SIDE_LEFT
т. е. все слева и чуть с центра. Сумма коэффициентов по каналу == 1, что бы громкость не зашкалила.

PS. А LFE и точно в /dev/null ушел.

Исходная версия fopen, :

Да. Фигня.

CustomChannelMapLocation - это раскладка на уровне кодека, а «[Parsed_aresample_0 @ 0x1cd1910]» - уровень фильтра.

channel_layout.c:
static const struct {
    const char *name;
    int         nb_channels;
    uint64_t     layout;
} channel_layout_map[] = {
...
    { "5.1(side)",   6,  AV_CH_LAYOUT_5POINT1 },
...

channel_layout.h:
#define AV_CH_LAYOUT_5POINT1           (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY)
#define AV_CH_LAYOUT_5POINT0           (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
#define AV_CH_LAYOUT_SURROUND          (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER)
#define AV_CH_LAYOUT_STEREO            (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)

#define AV_CH_FRONT_LEFT             0x00000001
#define AV_CH_FRONT_RIGHT            0x00000002
#define AV_CH_FRONT_CENTER           0x00000004
#define AV_CH_LOW_FREQUENCY          0x00000008
#define AV_CH_SIDE_LEFT              0x00000200
#define AV_CH_SIDE_RIGHT             0x00000400

Т. о. левый канал:

0.414214 * FRONT_LEFT + 0.292893 * FRONT_CENTER + 0.292893 * SIDE_LEFT
т. е. все слева и чуть с центра. Сумма коэффициентов по каналу == 1, что бы громкость не зашкалила.