mirror of
https://github.com/mpv-player/mpv
synced 2024-12-27 09:32:40 +00:00
demux_mkv: check if the video codec is an image
Add a simple helper to codec_tags to check if the codec name matches one of the images. If so, then we set still_image and image in the stream as true (slightly different semanatics).
This commit is contained in:
parent
be0a979a0b
commit
4709a94aec
@ -233,6 +233,17 @@ static const char *const type_to_codec[][2] = {
|
|||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool mp_codec_is_image(const char *codec)
|
||||||
|
{
|
||||||
|
if (codec) {
|
||||||
|
for (int n = 0; type_to_codec[n][0]; n++) {
|
||||||
|
if (strcasecmp(type_to_codec[n][1], codec) == 0)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const char *mp_map_type_to_image_codec(const char *type)
|
const char *mp_map_type_to_image_codec(const char *type)
|
||||||
{
|
{
|
||||||
if (type) {
|
if (type) {
|
||||||
|
@ -28,6 +28,7 @@ void mp_set_codec_from_tag(struct mp_codec_params *c);
|
|||||||
void mp_set_pcm_codec(struct mp_codec_params *c, bool sign, bool is_float,
|
void mp_set_pcm_codec(struct mp_codec_params *c, bool sign, bool is_float,
|
||||||
int bits, bool is_be);
|
int bits, bool is_be);
|
||||||
|
|
||||||
|
bool mp_codec_is_image(const char *codec);
|
||||||
const char *mp_map_type_to_image_codec(const char *type);
|
const char *mp_map_type_to_image_codec(const char *type);
|
||||||
const char *mp_map_mimetype_to_video_codec(const char *mimetype);
|
const char *mp_map_mimetype_to_video_codec(const char *mimetype);
|
||||||
|
|
||||||
|
@ -1484,6 +1484,10 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const char *codec = sh_v->codec ? sh_v->codec : "";
|
const char *codec = sh_v->codec ? sh_v->codec : "";
|
||||||
|
if (mp_codec_is_image(codec)) {
|
||||||
|
sh->still_image = true;
|
||||||
|
sh->image = true;
|
||||||
|
}
|
||||||
if (!strcmp(codec, "mjpeg")) {
|
if (!strcmp(codec, "mjpeg")) {
|
||||||
sh_v->codec_tag = MKTAG('m', 'j', 'p', 'g');
|
sh_v->codec_tag = MKTAG('m', 'j', 'p', 'g');
|
||||||
track->require_keyframes = true;
|
track->require_keyframes = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user