The field is filled with the codec context information. FIXME need a minor version bump.tags/n0.11
@@ -1257,6 +1257,16 @@ typedef struct AVFrame { | |||||
* - decoding: Read by user. | * - decoding: Read by user. | ||||
*/ | */ | ||||
int64_t pkt_pos; | int64_t pkt_pos; | ||||
/** | |||||
* channel layout of the audio frame | |||||
* - encoding: unused | |||||
* - decoding: read by user. | |||||
* Code outside libavcodec should access this field using: | |||||
* av_opt_ptr(avcodec_get_frame_class(), frame, "channel_layout") | |||||
*/ | |||||
int64_t channel_layout; | |||||
} AVFrame; | } AVFrame; | ||||
struct AVCodecInternal; | struct AVCodecInternal; | ||||
@@ -239,6 +239,7 @@ static const AVOption frame_options[]={ | |||||
{"width", "", FOFFSET(width), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, 0}, | {"width", "", FOFFSET(width), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, 0}, | ||||
{"height", "", FOFFSET(height), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, 0}, | {"height", "", FOFFSET(height), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, 0}, | ||||
{"format", "", FOFFSET(format), AV_OPT_TYPE_INT, {.dbl = -1 }, 0, INT_MAX, 0}, | {"format", "", FOFFSET(format), AV_OPT_TYPE_INT, {.dbl = -1 }, 0, INT_MAX, 0}, | ||||
{"channel_layout", "", FOFFSET(channel_layout), AV_OPT_TYPE_INT64, {.dbl = 0 }, 0, INT64_MAX, 0}, | |||||
{NULL}, | {NULL}, | ||||
}; | }; | ||||
@@ -1545,6 +1545,8 @@ int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, | |||||
frame->pkt_dts = avpkt->dts; | frame->pkt_dts = avpkt->dts; | ||||
if (frame->format == AV_SAMPLE_FMT_NONE) | if (frame->format == AV_SAMPLE_FMT_NONE) | ||||
frame->format = avctx->sample_fmt; | frame->format = avctx->sample_fmt; | ||||
if (!frame->channel_layout) | |||||
frame->channel_layout = avctx->channel_layout; | |||||
} | } | ||||
avctx->pkt = NULL; | avctx->pkt = NULL; | ||||