Skip to content

Commit

Permalink
demux_lavf: disable extension_picky for hls demuxer globally
Browse files Browse the repository at this point in the history
Added in FFmpeg/FFmpeg@91d96dc

The user can still turn this on via demuxer-lavf-o=extension_picky=1 if
they want to.

This causes quite a few problems with many HLS sources where the codecs
are not known at probe time for whatever reason. Youtube for instance
shows "aac" audio codecs as "unknown".

As an aside, the FFmpeg test is also buggy and leaks a nested
connection for any playlist item that fails the extension check. mpv
catches this and prints "Leaking 1 nested connections (FFmpeg bug)" for
every HLS stream that has at least one stream that fails the extension
check.
  • Loading branch information
llyyr committed Feb 24, 2025
1 parent b848ffa commit 159f970
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion demux/demux_lavf.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ struct format_hack {
bool no_seek_on_no_duration : 1;
bool readall_on_no_streamseek : 1;
bool first_frame_only : 1;
bool no_ext_picky : 1; // set "extension_picky" to false
};

#define BLACKLIST(fmt) {fmt, .ignore = true}
Expand All @@ -162,7 +163,7 @@ static const struct format_hack format_hacks[] = {
{"mp3", "audio/mpeg", 24, 0.5},
{"mp3", NULL, 24, .max_probe = true},

{"hls", .no_stream = true, .clear_filepos = true},
{"hls", .no_stream = true, .clear_filepos = true, .no_ext_picky = true},
{"dash", .no_stream = true, .clear_filepos = true},
{"sdp", .clear_filepos = true, .is_network = true, .no_seek = true},
{"mpeg", .use_stream_ids = true},
Expand Down Expand Up @@ -1005,6 +1006,9 @@ static int demux_open_lavf(demuxer_t *demuxer, enum demux_check check)
"analyzeduration to %f\n", analyze_duration);
}

if (priv->format_hack.no_ext_picky)
av_dict_set_int(&dopts, "extension_picky", 0, 0);

if ((priv->avif_flags & AVFMT_NOFILE) || priv->format_hack.no_stream) {
mp_setup_av_network_options(&dopts, priv->avif->name,
demuxer->global, demuxer->log);
Expand Down

0 comments on commit 159f970

Please sign in to comment.