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; | ||||