X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fffmetaenc.c;h=19fe6c960f37e70781ca43e595098a9fa23e46ee;hb=2ddf7c88d162473e84417e94e1fb7e4375ecfdae;hp=17e1d6f499b28e84af084b3bc883b37b6088f0dd;hpb=bb50ed089f29d13ecd2cc18dd01c4de88653351a;p=ffmpeg diff --git a/libavformat/ffmetaenc.c b/libavformat/ffmetaenc.c index 17e1d6f499b..19fe6c960f3 100644 --- a/libavformat/ffmetaenc.c +++ b/libavformat/ffmetaenc.c @@ -2,56 +2,59 @@ * Metadata muxer * Copyright (c) 2010 Anton Khirnov * - * 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 */ +#include + #include "avformat.h" -#include "meta.h" +#include "ffmeta.h" +#include "libavutil/dict.h" -static void write_escape_str(ByteIOContext *s, const uint8_t *str) +static void write_escape_str(AVIOContext *s, const uint8_t *str) { const uint8_t *p = str; while (*p) { if (*p == '#' || *p == ';' || *p == '=' || *p == '\\' || *p == '\n') - put_byte(s, '\\'); - put_byte(s, *p); + avio_w8(s, '\\'); + avio_w8(s, *p); p++; } } -static void write_tags(ByteIOContext *s, AVMetadata *m) +static void write_tags(AVIOContext *s, AVDictionary *m) { - AVMetadataTag *t = NULL; - while ((t = av_metadata_get(m, "", t, AV_METADATA_IGNORE_SUFFIX))) { + AVDictionaryEntry *t = NULL; + while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX))) { write_escape_str(s, t->key); - put_byte(s, '='); + avio_w8(s, '='); write_escape_str(s, t->value); - put_byte(s, '\n'); + avio_w8(s, '\n'); } } static int write_header(AVFormatContext *s) { - put_tag(s->pb, ID_STRING); - put_byte(s->pb, '1'); // version - put_byte(s->pb, '\n'); - put_flush_packet(s->pb); + avio_write(s->pb, ID_STRING, sizeof(ID_STRING) - 1); + avio_w8(s->pb, '1'); // version + avio_w8(s->pb, '\n'); + avio_flush(s->pb); return 0; } @@ -62,23 +65,21 @@ static int write_trailer(AVFormatContext *s) write_tags(s->pb, s->metadata); for (i = 0; i < s->nb_streams; i++) { - put_tag(s->pb, ID_STREAM); - put_byte(s->pb, '\n'); + avio_write(s->pb, ID_STREAM, sizeof(ID_STREAM) - 1); + avio_w8(s->pb, '\n'); write_tags(s->pb, s->streams[i]->metadata); } for (i = 0; i < s->nb_chapters; i++) { AVChapter *ch = s->chapters[i]; - put_tag(s->pb, ID_CHAPTER); - put_byte(s->pb, '\n'); - url_fprintf(s->pb, "TIMEBASE=%d/%d\n", ch->time_base.num, ch->time_base.den); - url_fprintf(s->pb, "START=%lld\n", ch->start); - url_fprintf(s->pb, "END=%lld\n", ch->end); + avio_write(s->pb, ID_CHAPTER, sizeof(ID_CHAPTER) - 1); + avio_w8(s->pb, '\n'); + avio_printf(s->pb, "TIMEBASE=%d/%d\n", ch->time_base.num, ch->time_base.den); + avio_printf(s->pb, "START=%"PRId64"\n", ch->start); + avio_printf(s->pb, "END=%"PRId64"\n", ch->end); write_tags(s->pb, ch->metadata); } - put_flush_packet(s->pb); - return 0; } @@ -87,9 +88,9 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt) return 0; } -AVOutputFormat ffmetadata_muxer = { +AVOutputFormat ff_ffmetadata_muxer = { .name = "ffmetadata", - .long_name = NULL_IF_CONFIG_SMALL("FFmpeg metadata in text format"), + .long_name = NULL_IF_CONFIG_SMALL("FFmpeg metadata in text"), .extensions = "ffmeta", .write_header = write_header, .write_packet = write_packet,