/* disable pts hack for testing */
int ffm_nopts = 0;
+#ifdef CONFIG_ENCODERS
static void flush_packet(AVFormatContext *s)
{
FFMContext *ffm = s->priv_data;
/* 'first' is true if first data of a frame */
static void ffm_write_data(AVFormatContext *s,
- uint8_t *buf, int size,
+ const uint8_t *buf, int size,
int64_t pts, int first)
{
FFMContext *ffm = s->priv_data;
}
static int ffm_write_packet(AVFormatContext *s, int stream_index,
- uint8_t *buf, int size, int force_pts)
+ const uint8_t *buf, int size, int64_t force_pts)
{
AVStream *st = s->streams[stream_index];
FFMStream *fst = st->priv_data;
av_freep(&s->streams[i]->priv_data);
return 0;
}
+#endif //CONFIG_ENCODERS
/* ffm demux */
FFMStream *fst;
ByteIOContext *pb = &s->pb;
AVCodecContext *codec;
- int i;
+ int i, nb_streams;
uint32_t tag;
/* header */
ffm->file_size = (uint64_t_C(1) << 63) - 1;
}
- s->nb_streams = get_be32(pb);
+ nb_streams = get_be32(pb);
get_be32(pb); /* total bitrate */
/* read each stream */
- for(i=0;i<s->nb_streams;i++) {
+ for(i=0;i<nb_streams;i++) {
char rc_eq_buf[128];
- st = av_mallocz(sizeof(AVStream));
+ st = av_new_stream(s, 0);
if (!st)
goto fail;
- avcodec_get_context_defaults(&st->codec);
- s->streams[i] = st;
fst = av_mallocz(sizeof(FFMStream));
if (!fst)
goto fail;
read(fd, buf, 8);
pos = 0;
for(i=0;i<8;i++)
- pos |= buf[i] << (56 - i * 8);
+ pos |= (int64_t)buf[i] << (56 - i * 8);
return pos;
}
ffm_seek,
};
+#ifdef CONFIG_ENCODERS
static AVOutputFormat ffm_oformat = {
"ffm",
"ffm format",
ffm_write_packet,
ffm_write_trailer,
};
+#endif //CONFIG_ENCODERS
int ffm_init(void)
{
av_register_input_format(&ffm_iformat);
+#ifdef CONFIG_ENCODERS
av_register_output_format(&ffm_oformat);
+#endif //CONFIG_ENCODERS
return 0;
}