demux_lavf: parent mp_codec_params members to it

The members were parented to the demuxer or sh_stream, while they really
commute better with mp_codec_params.
This commit is contained in:
Kacper Michajłow committed 2026-08-26 01:47:41 +02:00
1 parent 57b0a0a695
commit f73dd13376
3 files changed
+16 -11

No files matched your search

+1 -1
View File
@@ -3073,7 +3073,7 @@ static void demux_update_replaygain(demuxer_t *demuxer)
if (!rg) if (!rg)
rg = decode_rgain(demuxer->log, demuxer->metadata); rg = decode_rgain(demuxer->log, demuxer->metadata);
if (rg) if (rg)
sh->codec->replaygain_data = talloc_steal(in, rg); sh->codec->replaygain_data = talloc_steal(sh->codec, rg);
} }
} }
} }
+14 -9
View File
@@ -67,6 +67,11 @@
// libavformat (almost) always reads data in blocks of this size. // libavformat (almost) always reads data in blocks of this size.
#define BIO_BUFFER_SIZE 32768 #define BIO_BUFFER_SIZE 32768
static void avcodec_par_destructor(void *p)
{
avcodec_parameters_free(p);
}
#define OPT_BASE_STRUCT struct demux_lavf_opts #define OPT_BASE_STRUCT struct demux_lavf_opts
struct demux_lavf_opts { struct demux_lavf_opts {
int64_t probesize; int64_t probesize;
@@ -641,7 +646,7 @@ static void export_replaygain(demuxer_t *demuxer, struct sh_stream *sh,
if (!track_data_available && !album_data_available) if (!track_data_available && !album_data_available)
return; return;
struct replaygain_data *rgain = talloc_ptrtype(demuxer, rgain); struct replaygain_data *rgain = talloc_ptrtype(sh->codec, rgain);
rgain->track_gain = rgain->album_gain = 0; rgain->track_gain = rgain->album_gain = 0;
rgain->track_peak = rgain->album_peak = 1; rgain->track_peak = rgain->album_peak = 1;
@@ -719,7 +724,7 @@ static void handle_new_stream(demuxer_t *demuxer, int i)
sh->codec->samplerate = codec->sample_rate; sh->codec->samplerate = codec->sample_rate;
sh->codec->bitrate = codec->bit_rate; sh->codec->bitrate = codec->bit_rate;
sh->codec->format_name = talloc_strdup(sh, av_get_sample_fmt_name(codec->format)); sh->codec->format_name = talloc_strdup(sh->codec, av_get_sample_fmt_name(codec->format));
double delay = 0; double delay = 0;
if (codec->sample_rate > 0) if (codec->sample_rate > 0)
@@ -759,7 +764,7 @@ static void handle_new_stream(demuxer_t *demuxer, int i)
sh->codec->disp_w = codec->width; sh->codec->disp_w = codec->width;
sh->codec->disp_h = codec->height; sh->codec->disp_h = codec->height;
sh->codec->bitrate = codec->bit_rate; sh->codec->bitrate = codec->bit_rate;
sh->codec->format_name = talloc_strdup(sh, av_get_pix_fmt_name(codec->format)); sh->codec->format_name = talloc_strdup(sh->codec, av_get_pix_fmt_name(codec->format));
if (st->avg_frame_rate.num) if (st->avg_frame_rate.num)
sh->codec->fps = av_q2d(st->avg_frame_rate); sh->codec->fps = av_q2d(st->avg_frame_rate);
if (is_image(st, sh->attached_picture, priv->avif)) { if (is_image(st, sh->attached_picture, priv->avif)) {
@@ -796,7 +801,7 @@ static void handle_new_stream(demuxer_t *demuxer, int i)
sh = demux_alloc_sh_stream(STREAM_SUB); sh = demux_alloc_sh_stream(STREAM_SUB);
if (codec->extradata_size) { if (codec->extradata_size) {
sh->codec->extradata = talloc_size(sh, codec->extradata_size); sh->codec->extradata = talloc_size(sh->codec, codec->extradata_size);
memcpy(sh->codec->extradata, codec->extradata, codec->extradata_size); memcpy(sh->codec->extradata, codec->extradata, codec->extradata_size);
sh->codec->extradata_size = codec->extradata_size; sh->codec->extradata_size = codec->extradata_size;
} }
@@ -838,9 +843,11 @@ static void handle_new_stream(demuxer_t *demuxer, int i)
sh->ff_index = st->index; sh->ff_index = st->index;
mp_codec_info_from_avcodecpar(codec, sh->codec); mp_codec_info_from_avcodecpar(codec, sh->codec);
sh->codec->codec_tag = codec->codec_tag; sh->codec->codec_tag = codec->codec_tag;
sh->codec->lav_codecpar = avcodec_parameters_alloc(); AVCodecParameters **lavp = talloc_ptrtype(sh->codec, lavp);
if (sh->codec->lav_codecpar) talloc_set_destructor(lavp, avcodec_par_destructor);
avcodec_parameters_copy(sh->codec->lav_codecpar, codec); *lavp = avcodec_parameters_alloc();
if (*lavp && avcodec_parameters_copy(*lavp, codec) >= 0)
sh->codec->lav_codecpar = *lavp;
sh->codec->native_tb_num = st->time_base.num; sh->codec->native_tb_num = st->time_base.num;
sh->codec->native_tb_den = st->time_base.den; sh->codec->native_tb_den = st->time_base.den;
sh->codec->duration = st->duration * av_q2d(st->time_base); sh->codec->duration = st->duration * av_q2d(st->time_base);
@@ -1906,8 +1913,6 @@ static void demux_close_lavf(demuxer_t *demuxer)
av_freep(&priv->pb); av_freep(&priv->pb);
for (int n = 0; n < priv->num_streams; n++) { for (int n = 0; n < priv->num_streams; n++) {
struct stream_info *info = priv->streams[n]; struct stream_info *info = priv->streams[n];
if (info->sh)
avcodec_parameters_free(&info->sh->codec->lav_codecpar);
TA_FREEP(&info->dovi_split); TA_FREEP(&info->dovi_split);
} }
TA_FREEP(&priv->pending_pkt); TA_FREEP(&priv->pending_pkt);
+1 -1
View File
@@ -99,7 +99,7 @@ struct mp_dovi_split *mp_dovi_split_create(struct demuxer *demuxer,
el->codec->disp_w = par_out->width; el->codec->disp_w = par_out->width;
el->codec->disp_h = par_out->height; el->codec->disp_h = par_out->height;
if (par_out->extradata_size > 0) { if (par_out->extradata_size > 0) {
el->codec->extradata = talloc_memdup(el, par_out->extradata, el->codec->extradata = talloc_memdup(el->codec, par_out->extradata,
par_out->extradata_size); par_out->extradata_size);
el->codec->extradata_size = par_out->extradata_size; el->codec->extradata_size = par_out->extradata_size;
} }