X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fanm.c;h=f236ce6eeda64c504fa921e7519d8287f81e12d3;hb=ccc10acb5b941973acab49d64459bb110cc0a529;hp=463beee3452580db8f61ef6fbfb0a23c860aaffb;hpb=6b4aa5dac8f41aa452d0ce9a1bede9e59a303060;p=ffmpeg diff --git a/libavformat/anm.c b/libavformat/anm.c index 463beee3452..f236ce6eeda 100644 --- a/libavformat/anm.c +++ b/libavformat/anm.c @@ -2,20 +2,20 @@ * Deluxe Paint Animation demuxer * Copyright (c) 2009 Peter Ross * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -26,6 +26,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "internal.h" typedef struct { int base_record; @@ -75,15 +76,14 @@ static int find_record(const AnmDemuxContext *anm, int record) return AVERROR_INVALIDDATA; } -static int read_header(AVFormatContext *s, - AVFormatParameters *ap) +static int read_header(AVFormatContext *s) { AnmDemuxContext *anm = s->priv_data; AVIOContext *pb = s->pb; AVStream *st; int i, ret; - url_fskip(pb, 4); /* magic number */ + avio_skip(pb, 4); /* magic number */ if (avio_rl16(pb) != MAX_PAGES) { av_log_ask_for_sample(s, "max_pages != " AV_STRINGIFY(MAX_PAGES) "\n"); return AVERROR_INVALIDDATA; @@ -91,13 +91,13 @@ static int read_header(AVFormatContext *s, anm->nb_pages = avio_rl16(pb); anm->nb_records = avio_rl32(pb); - url_fskip(pb, 2); /* max records per page */ + avio_skip(pb, 2); /* max records per page */ anm->page_table_offset = avio_rl16(pb); if (avio_rl32(pb) != ANIM_TAG) return AVERROR_INVALIDDATA; /* video stream */ - st = av_new_stream(s, 0); + st = avformat_new_stream(s, NULL); if (!st) return AVERROR(ENOMEM); st->codec->codec_type = AVMEDIA_TYPE_VIDEO; @@ -107,13 +107,13 @@ static int read_header(AVFormatContext *s, st->codec->height = avio_rl16(pb); if (avio_r8(pb) != 0) goto invalid; - url_fskip(pb, 1); /* frame rate multiplier info */ + avio_skip(pb, 1); /* frame rate multiplier info */ /* ignore last delta record (used for looping) */ if (avio_r8(pb)) /* has_last_delta */ anm->nb_records = FFMAX(anm->nb_records - 1, 0); - url_fskip(pb, 1); /* last_delta_valid */ + avio_skip(pb, 1); /* last_delta_valid */ if (avio_r8(pb) != 0) goto invalid; @@ -121,31 +121,31 @@ static int read_header(AVFormatContext *s, if (avio_r8(pb) != 1) goto invalid; - url_fskip(pb, 1); /* other recs per frame */ + avio_skip(pb, 1); /* other recs per frame */ if (avio_r8(pb) != 1) goto invalid; - url_fskip(pb, 32); /* record_types */ + avio_skip(pb, 32); /* record_types */ st->nb_frames = avio_rl32(pb); - av_set_pts_info(st, 64, 1, avio_rl16(pb)); - url_fskip(pb, 58); + avpriv_set_pts_info(st, 64, 1, avio_rl16(pb)); + avio_skip(pb, 58); /* color cycling and palette data */ st->codec->extradata_size = 16*8 + 4*256; st->codec->extradata = av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); if (!st->codec->extradata) { ret = AVERROR(ENOMEM); - goto close_and_return; + goto fail; } ret = avio_read(pb, st->codec->extradata, st->codec->extradata_size); if (ret < 0) - goto close_and_return; + goto fail; /* read page table */ ret = avio_seek(pb, anm->page_table_offset, SEEK_SET); if (ret < 0) - goto close_and_return; + goto fail; for (i = 0; i < MAX_PAGES; i++) { Page *p = &anm->pt[i]; @@ -158,7 +158,7 @@ static int read_header(AVFormatContext *s, anm->page = find_record(anm, 0); if (anm->page < 0) { ret = anm->page; - goto close_and_return; + goto fail; } anm->record = -1; @@ -168,8 +168,7 @@ invalid: av_log_ask_for_sample(s, NULL); ret = AVERROR_INVALIDDATA; -close_and_return: - av_close_input_stream(s); +fail: return ret; } @@ -181,7 +180,7 @@ static int read_packet(AVFormatContext *s, Page *p; int tmp, record_size; - if (url_feof(s->pb)) + if (s->pb->eof_reached) return AVERROR(EIO); if (anm->page < 0) @@ -193,7 +192,7 @@ repeat: /* parse page header */ if (anm->record < 0) { avio_seek(pb, anm->page_table_offset + MAX_PAGES*6 + (anm->page<<16), SEEK_SET); - url_fskip(pb, 8 + 2*p->nb_records); + avio_skip(pb, 8 + 2*p->nb_records); anm->record = 0; } @@ -208,7 +207,7 @@ repeat: } /* fetch record size */ - tmp = url_ftell(pb); + tmp = avio_tell(pb); avio_seek(pb, anm->page_table_offset + MAX_PAGES*6 + (anm->page<<16) + 8 + anm->record * 2, SEEK_SET); record_size = avio_rl16(pb); @@ -226,10 +225,10 @@ repeat: } AVInputFormat ff_anm_demuxer = { - "anm", - NULL_IF_CONFIG_SMALL("Deluxe Paint Animation"), - sizeof(AnmDemuxContext), - probe, - read_header, - read_packet, + .name = "anm", + .long_name = NULL_IF_CONFIG_SMALL("Deluxe Paint Animation"), + .priv_data_size = sizeof(AnmDemuxContext), + .read_probe = probe, + .read_header = read_header, + .read_packet = read_packet, };