X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Ffilmstripenc.c;h=48f483bc9046fcd73c8b6fe5e6d497932a694faa;hb=bc70684e74a185d7b80c8b80bdedda659cb581b8;hp=8ead696360ebcf3633bf0aa741901743e69e3ec3;hpb=1811b7d1f5330e04a48b1d6425cf1ef6ed776ed1;p=ffmpeg diff --git a/libavformat/filmstripenc.c b/libavformat/filmstripenc.c index 8ead696360e..48f483bc904 100644 --- a/libavformat/filmstripenc.c +++ b/libavformat/filmstripenc.c @@ -26,13 +26,10 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "rawenc.h" #define RAND_TAG MKBETAG('R','a','n','d') -typedef struct FilmstripMuxContext { - int nb_frames; -} FilmstripMuxContext; - static int write_header(AVFormatContext *s) { if (s->streams[0]->codecpar->format != AV_PIX_FMT_RGBA) { @@ -42,23 +39,14 @@ static int write_header(AVFormatContext *s) return 0; } -static int write_packet(AVFormatContext *s, AVPacket *pkt) -{ - FilmstripMuxContext *film = s->priv_data; - avio_write(s->pb, pkt->data, pkt->size); - film->nb_frames++; - return 0; -} - static int write_trailer(AVFormatContext *s) { - FilmstripMuxContext *film = s->priv_data; AVIOContext *pb = s->pb; AVStream *st = s->streams[0]; int i; avio_wb32(pb, RAND_TAG); - avio_wb32(pb, film->nb_frames); + avio_wb32(pb, st->nb_frames); avio_wb16(pb, 0); // packing method avio_wb16(pb, 0); // reserved avio_wb16(pb, st->codecpar->width); @@ -72,14 +60,13 @@ static int write_trailer(AVFormatContext *s) return 0; } -AVOutputFormat ff_filmstrip_muxer = { +const AVOutputFormat ff_filmstrip_muxer = { .name = "filmstrip", .long_name = NULL_IF_CONFIG_SMALL("Adobe Filmstrip"), .extensions = "flm", - .priv_data_size = sizeof(FilmstripMuxContext), .audio_codec = AV_CODEC_ID_NONE, .video_codec = AV_CODEC_ID_RAWVIDEO, .write_header = write_header, - .write_packet = write_packet, + .write_packet = ff_raw_write_packet, .write_trailer = write_trailer, };