#include <stdint.h>
-#include "libavutil/audioconvert.h"
+#include "libavutil/channel_layout.h"
#include "libavcodec/avcodec.h"
#include "mov_chan.h"
};
static const struct {
- enum CodecID codec_id;
+ enum AVCodecID codec_id;
const enum MovChannelLayoutTag *layouts;
} mov_codec_ch_layouts[] = {
- { CODEC_ID_AAC, mov_ch_layouts_aac },
- { CODEC_ID_AC3, mov_ch_layouts_ac3 },
- { CODEC_ID_ALAC, mov_ch_layouts_alac },
- { CODEC_ID_PCM_U8, mov_ch_layouts_wav },
- { CODEC_ID_PCM_S8, mov_ch_layouts_wav },
- { CODEC_ID_PCM_S16LE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_S16BE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_S24LE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_S24BE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_S32LE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_S32BE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_F32LE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_F32BE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_F64LE, mov_ch_layouts_wav },
- { CODEC_ID_PCM_F64BE, mov_ch_layouts_wav },
- { CODEC_ID_NONE, NULL },
+ { AV_CODEC_ID_AAC, mov_ch_layouts_aac },
+ { AV_CODEC_ID_AC3, mov_ch_layouts_ac3 },
+ { AV_CODEC_ID_ALAC, mov_ch_layouts_alac },
+ { AV_CODEC_ID_PCM_U8, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_S8, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_S16LE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_S16BE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_S24LE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_S24BE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_S32LE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_S32BE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_F32LE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_F32BE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_F64LE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_PCM_F64BE, mov_ch_layouts_wav },
+ { AV_CODEC_ID_NONE, NULL },
};
uint64_t ff_mov_get_channel_layout(uint32_t tag, uint32_t bitmap)
return 0;
}
-uint32_t ff_mov_get_channel_layout_tag(enum CodecID codec_id,
+uint32_t ff_mov_get_channel_layout_tag(enum AVCodecID codec_id,
uint64_t channel_layout,
uint32_t *bitmap)
{
const enum MovChannelLayoutTag *layouts = NULL;
/* find the layout list for the specified codec */
- for (i = 0; mov_codec_ch_layouts[i].codec_id != CODEC_ID_NONE; i++) {
+ for (i = 0; mov_codec_ch_layouts[i].codec_id != AV_CODEC_ID_NONE; i++) {
if (mov_codec_ch_layouts[i].codec_id == codec_id)
break;
}
- if (mov_codec_ch_layouts[i].codec_id != CODEC_ID_NONE)
+ if (mov_codec_ch_layouts[i].codec_id != AV_CODEC_ID_NONE)
layouts = mov_codec_ch_layouts[i].layouts;
if (layouts) {
return tag;
}
-int ff_mov_read_chan(AVFormatContext *s, AVStream *st, int64_t size)
+int ff_mov_read_chan(AVFormatContext *s, AVIOContext *pb, AVStream *st,
+ int64_t size)
{
- AVIOContext *pb = s->pb;
uint32_t layout_tag, bitmap, num_descr, label_mask;
int i;
label_mask |= mask_incr;
}
}
- if (layout_tag == 0)
+ if (layout_tag == 0) {
+ if (label_mask)
st->codec->channel_layout = label_mask;
- else
+ } else
st->codec->channel_layout = ff_mov_get_channel_layout(layout_tag, bitmap);
return 0;