On date Saturday 2024-01-13 05:57:18 +0800, 陈督 wrote: > > > /*When it is not a planar arrangement, data[1] is empty, > > and all the data is interleaved in data[0]. > > This can result in a segmentation fault when accessing data[ch] .*/ > > //So I delete the code below: > > for (i = 0; i < frame->nb_samples; i++) > > for (ch = 0; ch < dec_ctx->ch_layout.nb_channels; ch++) > > fwrite(frame->data[ch] + data_size*i, 1, data_size, outfile); > > > > > //And I write this instead > > // L R data order > > if (av_sample_fmt_is_planar(dec_ctx->sample_fmt)) > > { > > // planar:LLL...RRR... in different data[ch] >
> for (ch = 0; ch < dec_ctx->ch_layout.nb_channels; ch++) > > { > > fwrite(frame->data[ch], 1, frame->linesize[0], outfile); // only > linesize[0] has data. > The problem with this approach is that this is generating output in a format which cannot be played by ffplay, which is assuming packed (i.e. non planar) format. So it is expecting the output file to be written as: LRLRLR... rather than as: LLLLLL....RRRRR also because ffplay does not know the linesize. ... But I see the example code should be fixed, it was designed with the assumption that the input sample format was always packed, which is not the case anymore. [...] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".