ok if fate passed and it is covered. On 3/21/20, Andreas Rheinhardt <andreas.rheinha...@gmail.com> wrote: > The hnm demuxer's context struct contained lots of fields that are > write-only variables or that are not used outside of parsing the header > and that can therefore be replaced by local variables of hnm_read_header(). > This commit removes all of these from the context; the second type has > been replaced by local variables. > > An AVPacket (that was initialized when reading the header and for which > dead code to unreference it existed in hnm_read_close()) is among the > removed things. Removing it allowed to remove hnm_read_close() > altogether and also removes another instance of usage of sizeof(AVPacket). > > Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com> > --- > libavformat/hnm.c | 63 +++++++++-------------------------------------- > 1 file changed, 12 insertions(+), 51 deletions(-) > > diff --git a/libavformat/hnm.c b/libavformat/hnm.c > index 31221553a4..f06add5cf8 100644 > --- a/libavformat/hnm.c > +++ b/libavformat/hnm.c > @@ -37,19 +37,9 @@ > #define HNM4_CHUNK_ID_SD 17491 > > typedef struct Hnm4DemuxContext { > - uint8_t version; > - uint16_t width; > - uint16_t height; > - uint32_t filesize; > uint32_t frames; > - uint32_t taboffset; > - uint16_t bits; > - uint16_t channels; > - uint32_t framesize; > uint32_t currentframe; > - int64_t pts; > uint32_t superchunk_remaining; > - AVPacket vpkt; > } Hnm4DemuxContext; > > static int hnm_probe(const AVProbeData *p) > @@ -69,55 +59,37 @@ static int hnm_read_header(AVFormatContext *s) > { > Hnm4DemuxContext *hnm = s->priv_data; > AVIOContext *pb = s->pb; > + unsigned width, height; > AVStream *vst; > int ret; > > - /* default context members */ > - hnm->pts = 0; > - av_init_packet(&hnm->vpkt); > - hnm->vpkt.data = NULL; > - hnm->vpkt.size = 0; > - > - hnm->superchunk_remaining = 0; > - > avio_skip(pb, 8); > - hnm->width = avio_rl16(pb); > - hnm->height = avio_rl16(pb); > - hnm->filesize = avio_rl32(pb); > + width = avio_rl16(pb); > + height = avio_rl16(pb); > + avio_rl32(pb); // filesize > hnm->frames = avio_rl32(pb); > - hnm->taboffset = avio_rl32(pb); > - hnm->bits = avio_rl16(pb); > - hnm->channels = avio_rl16(pb); > - hnm->framesize = avio_rl32(pb); > - avio_skip(pb, 32); > + avio_skip(pb, 44); > > - hnm->currentframe = 0; > - > - if (hnm->width < 256 || hnm->width > 640 || > - hnm->height < 150 || hnm->height > 480) { > + if (width < 256 || width > 640 || > + height < 150 || height > 480) { > av_log(s, AV_LOG_ERROR, > - "invalid resolution: %ux%u\n", hnm->width, hnm->height); > + "invalid resolution: %ux%u\n", width, height); > return AVERROR_INVALIDDATA; > } > > - // TODO: find a better way to detect HNM4A > - if (hnm->width == 640) > - hnm->version = 0x4a; > - else > - hnm->version = 0x40; > - > if (!(vst = avformat_new_stream(s, NULL))) > return AVERROR(ENOMEM); > > vst->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; > vst->codecpar->codec_id = AV_CODEC_ID_HNM4_VIDEO; > vst->codecpar->codec_tag = 0; > - vst->codecpar->width = hnm->width; > - vst->codecpar->height = hnm->height; > + vst->codecpar->width = width; > + vst->codecpar->height = height; > if ((ret = ff_alloc_extradata(vst->codecpar, 1)) < 0) > return ret; > > - vst->codecpar->extradata[0] = hnm->version; > + // TODO: find a better way to detect HNM4A > + vst->codecpar->extradata[0] = width == 640 ? 0x4a : 0x40; > > vst->start_time = 0; > > @@ -186,16 +158,6 @@ static int hnm_read_packet(AVFormatContext *s, AVPacket > *pkt) > return ret; > } > > -static int hnm_read_close(AVFormatContext *s) > -{ > - Hnm4DemuxContext *hnm = s->priv_data; > - > - if (hnm->vpkt.size > 0) > - av_packet_unref(&hnm->vpkt); > - > - return 0; > -} > - > AVInputFormat ff_hnm_demuxer = { > .name = "hnm", > .long_name = NULL_IF_CONFIG_SMALL("Cryo HNM v4"), > @@ -203,6 +165,5 @@ AVInputFormat ff_hnm_demuxer = { > .read_probe = hnm_probe, > .read_header = hnm_read_header, > .read_packet = hnm_read_packet, > - .read_close = hnm_read_close, > .flags = AVFMT_NO_BYTE_SEEK | AVFMT_NOGENSEARCH | > AVFMT_NOBINSEARCH > }; > -- > 2.20.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".