| @@ -28,6 +28,7 @@ · 27 unmodified lines |
| 28 | #include "libavutil/bprint.h" | 28 | #include "libavutil/bprint.h" |
| 29 | #include "libavutil/dict.h" | 29 | #include "libavutil/dict.h" |
| 30 | #include "libavutil/internal.h" | 30 | #include "libavutil/internal.h" |
| | 31 | #include "libavutil/intmath.h" |
| 31 | #include "libavutil/opt.h" | 32 | #include "libavutil/opt.h" |
| 32 | #include "libavutil/parseutils.h" | 33 | #include "libavutil/parseutils.h" |
| 33 | #include "libavutil/pixfmt.h" | 34 | #include "libavutil/pixfmt.h" |
| @@ -1965,3 +1966,49 @@ void ff_format_set_url(AVFormatContext *s, char *url) · 1931 unmodified lines |
| 1965 | av_freep(&s->url); | 1966 | av_freep(&s->url); |
| 1966 | s->url = url; | 1967 | s->url = url; |
| 1967 | } | 1968 | } |
| | 1969 | |
| | 1970 | static const struct { |
| | 1971 | const char *str; |
| | 1972 | int disposition; |
| | 1973 | } dispositions[] = { |
| | 1974 | { "default", AV_DISPOSITION_DEFAULT }, |
| | 1975 | { "dub", AV_DISPOSITION_DUB }, |
| | 1976 | { "original", AV_DISPOSITION_ORIGINAL }, |
| | 1977 | { "comment", AV_DISPOSITION_COMMENT }, |
| | 1978 | { "lyrics", AV_DISPOSITION_LYRICS }, |
| | 1979 | { "karaoke", AV_DISPOSITION_KARAOKE }, |
| | 1980 | { "forced", AV_DISPOSITION_FORCED }, |
| | 1981 | { "hearing_impaired", AV_DISPOSITION_HEARING_IMPAIRED }, |
| | 1982 | { "visual_impaired", AV_DISPOSITION_VISUAL_IMPAIRED }, |
| | 1983 | { "clean_effects", AV_DISPOSITION_CLEAN_EFFECTS }, |
| | 1984 | { "attached_pic", AV_DISPOSITION_ATTACHED_PIC }, |
| | 1985 | { "timed_thumbnails", AV_DISPOSITION_TIMED_THUMBNAILS }, |
| | 1986 | { "captions", AV_DISPOSITION_CAPTIONS }, |
| | 1987 | { "descriptions", AV_DISPOSITION_DESCRIPTIONS }, |
| | 1988 | { "metadata", AV_DISPOSITION_METADATA }, |
| | 1989 | { "dependent", AV_DISPOSITION_DEPENDENT }, |
| | 1990 | { "still_image", AV_DISPOSITION_STILL_IMAGE }, |
| | 1991 | }; |
| | 1992 | |
| | 1993 | int av_disposition_from_string(const char *disp) |
| | 1994 | { |
| | 1995 | for (int i = 0; i < FF_ARRAY_ELEMS(dispositions); i++) |
| | 1996 | if (!strcmp(disp, dispositions[i].str)) |
| | 1997 | return dispositions[i].disposition; |
| | 1998 | return AVERROR(EINVAL); |
| | 1999 | } |
| | 2000 | |
| | 2001 | const char *av_disposition_to_string(int disposition) |
| | 2002 | { |
| | 2003 | int val; |
| | 2004 | |
| | 2005 | if (disposition <= 0) |
| | 2006 | return NULL; |
| | 2007 | |
| | 2008 | val = 1 << ff_ctz(disposition); |
| | 2009 | for (int i = 0; i < FF_ARRAY_ELEMS(dispositions); i++) |
| | 2010 | if (dispositions[i].disposition == val) |
| | 2011 | return dispositions[i].str; |
| | 2012 | |
| | 2013 | return NULL; |
| | 2014 | } |