X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Frawenc.c;h=d65c7c79097b257bafdc88076d525df0324c86ef;hb=7e9c7b623f051eea2e9565a260dae071f873cb42;hp=9b77cdcab253c6cf8e8d4c7c92974b3aae21294c;hpb=cdf6804056098757cc74ebce17752fb34771f06d;p=ffmpeg diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c index 9b77cdcab25..d65c7c79097 100644 --- a/libavformat/rawenc.c +++ b/libavformat/rawenc.c @@ -56,6 +56,25 @@ AVOutputFormat ff_ac3_muxer = { #endif #if CONFIG_ADX_MUXER + +static int adx_write_trailer(AVFormatContext *s) +{ + AVIOContext *pb = s->pb; + AVCodecContext *avctx = s->streams[0]->codec; + + if (pb->seekable) { + int64_t file_size = avio_tell(pb); + uint64_t sample_count = (file_size - 36) / avctx->channels / 18 * 32; + if (sample_count <= UINT32_MAX) { + avio_seek(pb, 12, SEEK_SET); + avio_wb32(pb, sample_count); + avio_seek(pb, file_size, SEEK_SET); + } + } + + return 0; +} + AVOutputFormat ff_adx_muxer = { .name = "adx", .long_name = NULL_IF_CONFIG_SMALL("CRI ADX"), @@ -64,6 +83,7 @@ AVOutputFormat ff_adx_muxer = { .video_codec = AV_CODEC_ID_NONE, .write_header = force_one_stream, .write_packet = ff_raw_write_packet, + .write_trailer = adx_write_trailer, .flags = AVFMT_NOTIMESTAMPS, }; #endif @@ -252,6 +272,19 @@ AVOutputFormat ff_mjpeg_muxer = { }; #endif +#if CONFIG_SINGLEJPEG_MUXER +AVOutputFormat ff_singlejpeg_muxer = { + .name = "singlejpeg", + .long_name = NULL_IF_CONFIG_SMALL("JPEG single image"), + .mime_type = "image/jpeg", + .audio_codec = AV_CODEC_ID_NONE, + .video_codec = AV_CODEC_ID_MJPEG, + .write_packet = ff_raw_write_packet, + .flags = AVFMT_NOTIMESTAMPS, + .write_header = force_one_stream, +}; +#endif + #if CONFIG_MLP_MUXER AVOutputFormat ff_mlp_muxer = { .name = "mlp",