avpriv_set_pts_info(st, 64, 1, 1000000000);
} else if (s->ts_from_file)
avpriv_set_pts_info(st, 64, 1, 1);
- else
+ else {
avpriv_set_pts_info(st, 64, s->framerate.den, s->framerate.num);
+ st->avg_frame_rate = st->r_frame_rate = s->framerate;
+ }
if (s->width && s->height) {
st->codecpar->width = s->width;
* as a dictionary, so it can be used by filters like 'drawtext'.
*/
static int add_filename_as_pkt_side_data(char *filename, AVPacket *pkt) {
- int metadata_len, ret;
AVDictionary *d = NULL;
char *packed_metadata = NULL;
+ size_t metadata_len;
+ int ret;
av_dict_set(&d, "lavf.image2dec.source_path", filename, 0);
av_dict_set(&d, "lavf.image2dec.source_basename", av_basename(filename), 0);
int index = av_index_search_timestamp(st, timestamp, flags);
if(index < 0)
return -1;
- s1->img_number = st->index_entries[index].pos;
+ s1->img_number = st->internal->index_entries[index].pos;
return 0;
}
return AVPROBE_SCORE_EXTENSION / 4;
}
+static int cri_probe(const AVProbeData *p)
+{
+ const uint8_t *b = p->buf;
+
+ if ( AV_RL32(b) == 1
+ && AV_RL32(b + 4) == 4
+ && AV_RN32(b + 8) == AV_RN32("DVCC"))
+ return AVPROBE_SCORE_MAX - 1;
+ return 0;
+}
+
static int dds_probe(const AVProbeData *p)
{
const uint8_t *b = p->buf;
return AVPROBE_SCORE_EXTENSION + 1;
if (state == SOS)
return AVPROBE_SCORE_EXTENSION / 2;
- return AVPROBE_SCORE_EXTENSION / 8;
+ return AVPROBE_SCORE_EXTENSION / 8 + 1;
}
static int jpegls_probe(const AVProbeData *p)
static int pbm_probe(const AVProbeData *p)
{
- return pnm_magic_check(p, 1) || pnm_magic_check(p, 4) ? pnm_probe(p) : 0;
+ return pnm_magic_check(p, 1) || pnm_magic_check(p, 4) || pnm_magic_check(p, 22) || pnm_magic_check(p, 54) ? pnm_probe(p) : 0;
}
static inline int pgmx_probe(const AVProbeData *p)
return pnm_magic_check(p, 7) ? pnm_probe(p) : 0;
}
+static int xbm_probe(const AVProbeData *p)
+{
+ if (!memcmp(p->buf, "/* XBM X10 format */", 20))
+ return AVPROBE_SCORE_MAX;
+
+ if (!memcmp(p->buf, "#define", 7))
+ return AVPROBE_SCORE_MAX - 1;
+ return 0;
+}
+
static int xpm_probe(const AVProbeData *p)
{
const uint8_t *b = p->buf;
return AVPROBE_SCORE_MAX - 1;
}
+static int photocd_probe(const AVProbeData *p)
+{
+ if (!memcmp(p->buf, "PCD_OPA", 7))
+ return AVPROBE_SCORE_MAX - 1;
+
+ if (p->buf_size < 0x807 || memcmp(p->buf + 0x800, "PCD_IPI", 7))
+ return 0;
+
+ return AVPROBE_SCORE_MAX - 1;
+}
+
#define IMAGEAUTO_DEMUXER(imgname, codecid)\
static const AVClass imgname ## _class = {\
.class_name = AV_STRINGIFY(imgname) " demuxer",\
};
IMAGEAUTO_DEMUXER(bmp, AV_CODEC_ID_BMP)
+IMAGEAUTO_DEMUXER(cri, AV_CODEC_ID_CRI)
IMAGEAUTO_DEMUXER(dds, AV_CODEC_ID_DDS)
IMAGEAUTO_DEMUXER(dpx, AV_CODEC_ID_DPX)
IMAGEAUTO_DEMUXER(exr, AV_CODEC_ID_EXR)
IMAGEAUTO_DEMUXER(pgm, AV_CODEC_ID_PGM)
IMAGEAUTO_DEMUXER(pgmyuv, AV_CODEC_ID_PGMYUV)
IMAGEAUTO_DEMUXER(pgx, AV_CODEC_ID_PGX)
+IMAGEAUTO_DEMUXER(photocd, AV_CODEC_ID_PHOTOCD)
IMAGEAUTO_DEMUXER(pictor, AV_CODEC_ID_PICTOR)
IMAGEAUTO_DEMUXER(png, AV_CODEC_ID_PNG)
IMAGEAUTO_DEMUXER(ppm, AV_CODEC_ID_PPM)
IMAGEAUTO_DEMUXER(svg, AV_CODEC_ID_SVG)
IMAGEAUTO_DEMUXER(tiff, AV_CODEC_ID_TIFF)
IMAGEAUTO_DEMUXER(webp, AV_CODEC_ID_WEBP)
+IMAGEAUTO_DEMUXER(xbm, AV_CODEC_ID_XBM)
IMAGEAUTO_DEMUXER(xpm, AV_CODEC_ID_XPM)
IMAGEAUTO_DEMUXER(xwd, AV_CODEC_ID_XWD)