in its place. av_metadata_set() is going to be dropped at the next major bump. Originally committed as revision 22961 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.6
| @@ -3287,7 +3287,7 @@ static void new_video_stream(AVFormatContext *oc) | |||
| } | |||
| nb_ocodecs++; | |||
| if (video_language) { | |||
| av_metadata_set(&st->metadata, "language", video_language); | |||
| av_metadata_set2(&st->metadata, "language", video_language, 0); | |||
| av_freep(&video_language); | |||
| } | |||
| @@ -3361,7 +3361,7 @@ static void new_audio_stream(AVFormatContext *oc) | |||
| nb_ocodecs++; | |||
| audio_enc->time_base= (AVRational){1, audio_sample_rate}; | |||
| if (audio_language) { | |||
| av_metadata_set(&st->metadata, "language", audio_language); | |||
| av_metadata_set2(&st->metadata, "language", audio_language, 0); | |||
| av_freep(&audio_language); | |||
| } | |||
| @@ -3402,7 +3402,7 @@ static void new_subtitle_stream(AVFormatContext *oc) | |||
| nb_ocodecs++; | |||
| if (subtitle_language) { | |||
| av_metadata_set(&st->metadata, "language", subtitle_language); | |||
| av_metadata_set2(&st->metadata, "language", subtitle_language, 0); | |||
| av_freep(&subtitle_language); | |||
| } | |||
| @@ -3533,8 +3533,8 @@ static void opt_output_file(const char *filename) | |||
| oc->timestamp = rec_timestamp; | |||
| for(; metadata_count>0; metadata_count--){ | |||
| av_metadata_set(&oc->metadata, metadata[metadata_count-1].key, | |||
| metadata[metadata_count-1].value); | |||
| av_metadata_set2(&oc->metadata, metadata[metadata_count-1].key, | |||
| metadata[metadata_count-1].value, 0); | |||
| } | |||
| av_metadata_conv(oc, oc->oformat->metadata_conv, NULL); | |||
| } | |||
| @@ -2232,10 +2232,10 @@ static int http_prepare_data(HTTPContext *c) | |||
| switch(c->state) { | |||
| case HTTPSTATE_SEND_DATA_HEADER: | |||
| memset(&c->fmt_ctx, 0, sizeof(c->fmt_ctx)); | |||
| av_metadata_set(&c->fmt_ctx.metadata, "author" ,c->stream->author); | |||
| av_metadata_set(&c->fmt_ctx.metadata, "comment" ,c->stream->comment); | |||
| av_metadata_set(&c->fmt_ctx.metadata, "copyright",c->stream->copyright); | |||
| av_metadata_set(&c->fmt_ctx.metadata, "title" ,c->stream->title); | |||
| av_metadata_set2(&c->fmt_ctx.metadata, "author" , c->stream->author , 0); | |||
| av_metadata_set2(&c->fmt_ctx.metadata, "comment" , c->stream->comment , 0); | |||
| av_metadata_set2(&c->fmt_ctx.metadata, "copyright", c->stream->copyright, 0); | |||
| av_metadata_set2(&c->fmt_ctx.metadata, "title" , c->stream->title , 0); | |||
| for(i=0;i<c->stream->nb_streams;i++) { | |||
| AVStream *st; | |||
| @@ -2939,8 +2939,8 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer, | |||
| if (avc == NULL) { | |||
| return -1; | |||
| } | |||
| av_metadata_set(&avc->metadata, "title", | |||
| stream->title[0] ? stream->title : "No Title"); | |||
| av_metadata_set2(&avc->metadata, "title", | |||
| stream->title[0] ? stream->title : "No Title", 0); | |||
| avc->nb_streams = stream->nb_streams; | |||
| if (stream->is_multicast) { | |||
| snprintf(avc->filename, 1024, "rtp://%s:%d?multicast=1?ttl=%d", | |||
| @@ -616,7 +616,7 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) | |||
| const char primary_tag[3] = { rfc1766[0], rfc1766[1], '\0' }; // ignore country code if any | |||
| const char *iso6392 = av_convert_lang_to(primary_tag, AV_LANG_ISO639_2_BIBL); | |||
| if (iso6392) | |||
| av_metadata_set(&st->metadata, "language", iso6392); | |||
| av_metadata_set2(&st->metadata, "language", iso6392, 0); | |||
| } | |||
| } | |||
| } | |||
| @@ -145,8 +145,9 @@ av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int f | |||
| * @param key tag key to add to m (will be av_strduped) | |||
| * @param value tag value to add to m (will be av_strduped) | |||
| * @return >= 0 on success otherwise an error code <0 | |||
| * @deprecated Use av_metadata_set2() instead. | |||
| */ | |||
| int av_metadata_set(AVMetadata **pm, const char *key, const char *value); | |||
| attribute_deprecated int av_metadata_set(AVMetadata **pm, const char *key, const char *value); | |||
| #endif | |||
| /** | |||
| @@ -172,7 +172,7 @@ static void read_info_chunk(AVFormatContext *s, int64_t size) | |||
| char value[1024]; | |||
| get_strz(pb, key, sizeof(key)); | |||
| get_strz(pb, value, sizeof(value)); | |||
| av_metadata_set(&s->metadata, key, value); | |||
| av_metadata_set2(&s->metadata, key, value, 0); | |||
| } | |||
| } | |||
| @@ -188,17 +188,17 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, AVStream *vst | |||
| if(amf_type == AMF_DATA_TYPE_BOOL) { | |||
| av_strlcpy(str_val, num_val > 0 ? "true" : "false", sizeof(str_val)); | |||
| av_metadata_set(&s->metadata, key, str_val); | |||
| av_metadata_set2(&s->metadata, key, str_val, 0); | |||
| } else if(amf_type == AMF_DATA_TYPE_NUMBER) { | |||
| snprintf(str_val, sizeof(str_val), "%.f", num_val); | |||
| av_metadata_set(&s->metadata, key, str_val); | |||
| av_metadata_set2(&s->metadata, key, str_val, 0); | |||
| if(!strcmp(key, "duration")) s->duration = num_val * AV_TIME_BASE; | |||
| else if(!strcmp(key, "videodatarate") && vcodec && 0 <= (int)(num_val * 1024.0)) | |||
| vcodec->bit_rate = num_val * 1024.0; | |||
| else if(!strcmp(key, "audiodatarate") && acodec && 0 <= (int)(num_val * 1024.0)) | |||
| acodec->bit_rate = num_val * 1024.0; | |||
| } else if (amf_type == AMF_DATA_TYPE_STRING) | |||
| av_metadata_set(&s->metadata, key, str_val); | |||
| av_metadata_set2(&s->metadata, key, str_val, 0); | |||
| } | |||
| return 0; | |||
| @@ -192,7 +192,7 @@ static void get_string(AVFormatContext *s, const char *key, | |||
| *q = '\0'; | |||
| if (*str) | |||
| av_metadata_set(&s->metadata, key, str); | |||
| av_metadata_set2(&s->metadata, key, str, 0); | |||
| } | |||
| /** | |||
| @@ -217,7 +217,7 @@ static int parse_tag(AVFormatContext *s, const uint8_t *buf) | |||
| av_metadata_set2(&s->metadata, "track", av_d2str(buf[126]), AV_METADATA_DONT_STRDUP_VAL); | |||
| genre = buf[127]; | |||
| if (genre <= ID3v1_GENRE_MAX) | |||
| av_metadata_set(&s->metadata, "genre", ff_id3v1_genre_str[genre]); | |||
| av_metadata_set2(&s->metadata, "genre", ff_id3v1_genre_str[genre], 0); | |||
| return 0; | |||
| } | |||
| @@ -150,7 +150,7 @@ static void read_ttag(AVFormatContext *s, int taglen, const char *key) | |||
| val = dst; | |||
| if (val) | |||
| av_metadata_set(&s->metadata, key, val); | |||
| av_metadata_set2(&s->metadata, key, val, 0); | |||
| } | |||
| void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t flags) | |||
| @@ -1001,14 +1001,14 @@ static void matroska_convert_tag(AVFormatContext *s, EbmlList *list, | |||
| if (prefix) snprintf(key, sizeof(key), "%s/%s", prefix, tags[i].name); | |||
| else av_strlcpy(key, tags[i].name, sizeof(key)); | |||
| if (tags[i].def || !lang) { | |||
| av_metadata_set(metadata, key, tags[i].string); | |||
| av_metadata_set2(metadata, key, tags[i].string, 0); | |||
| if (tags[i].sub.nb_elem) | |||
| matroska_convert_tag(s, &tags[i].sub, metadata, key); | |||
| } | |||
| if (lang) { | |||
| av_strlcat(key, "-", sizeof(key)); | |||
| av_strlcat(key, lang, sizeof(key)); | |||
| av_metadata_set(metadata, key, tags[i].string); | |||
| av_metadata_set2(metadata, key, tags[i].string, 0); | |||
| if (tags[i].sub.nb_elem) | |||
| matroska_convert_tag(s, &tags[i].sub, metadata, key); | |||
| } | |||
| @@ -1157,7 +1157,7 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) | |||
| if (matroska->duration) | |||
| matroska->ctx->duration = matroska->duration * matroska->time_scale | |||
| * 1000 / AV_TIME_BASE; | |||
| av_metadata_set(&s->metadata, "title", matroska->title); | |||
| av_metadata_set2(&s->metadata, "title", matroska->title, 0); | |||
| tracks = matroska->tracks.elem; | |||
| for (i=0; i < matroska->tracks.nb_elem; i++) { | |||
| @@ -1352,8 +1352,8 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) | |||
| st->codec->codec_id = codec_id; | |||
| st->start_time = 0; | |||
| if (strcmp(track->language, "und")) | |||
| av_metadata_set(&st->metadata, "language", track->language); | |||
| av_metadata_set(&st->metadata, "title", track->name); | |||
| av_metadata_set2(&st->metadata, "language", track->language, 0); | |||
| av_metadata_set2(&st->metadata, "title", track->name, 0); | |||
| if (track->flag_default) | |||
| st->disposition |= AV_DISPOSITION_DEFAULT; | |||
| @@ -1410,7 +1410,7 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) | |||
| AVStream *st = av_new_stream(s, 0); | |||
| if (st == NULL) | |||
| break; | |||
| av_metadata_set(&st->metadata, "filename",attachements[j].filename); | |||
| av_metadata_set2(&st->metadata, "filename",attachements[j].filename, 0); | |||
| st->codec->codec_id = CODEC_ID_NONE; | |||
| st->codec->codec_type = AVMEDIA_TYPE_ATTACHMENT; | |||
| st->codec->extradata = av_malloc(attachements[j].bin.size); | |||
| @@ -1438,8 +1438,8 @@ static int matroska_read_header(AVFormatContext *s, AVFormatParameters *ap) | |||
| ff_new_chapter(s, chapters[i].uid, (AVRational){1, 1000000000}, | |||
| chapters[i].start, chapters[i].end, | |||
| chapters[i].title); | |||
| av_metadata_set(&chapters[i].chapter->metadata, | |||
| "title", chapters[i].title); | |||
| av_metadata_set2(&chapters[i].chapter->metadata, | |||
| "title", chapters[i].title, 0); | |||
| max_start = chapters[i].start; | |||
| } | |||
| @@ -133,7 +133,7 @@ void metadata_conv(AVMetadata **pm, const AVMetadataConv *d_conv, | |||
| break; | |||
| } | |||
| } | |||
| av_metadata_set(&dst, key, mtag->value); | |||
| av_metadata_set2(&dst, key, mtag->value, 0); | |||
| } | |||
| av_metadata_free(pm); | |||
| *pm = dst; | |||
| @@ -109,7 +109,7 @@ void ff_metadata_demux_compat(AVFormatContext *ctx) | |||
| #define FILL_METADATA(s, key, value) { \ | |||
| if (value && *value && !av_metadata_get(s->metadata, #key, NULL, 0)) \ | |||
| av_metadata_set(&s->metadata, #key, value); \ | |||
| av_metadata_set2(&s->metadata, #key, value, 0); \ | |||
| } | |||
| #define FILL_METADATA_STR(s, key) FILL_METADATA(s, key, s->key) | |||
| #define FILL_METADATA_INT(s, key) { \ | |||
| @@ -86,7 +86,7 @@ static int mov_metadata_trkn(MOVContext *c, ByteIOContext *pb, unsigned len) | |||
| get_be16(pb); // unknown | |||
| snprintf(buf, sizeof(buf), "%d", get_be16(pb)); | |||
| av_metadata_set(&c->fc->metadata, "track", buf); | |||
| av_metadata_set2(&c->fc->metadata, "track", buf, 0); | |||
| get_be16(pb); // total tracks | |||
| @@ -204,10 +204,10 @@ static int mov_read_udta_string(MOVContext *c, ByteIOContext *pb, MOVAtom atom) | |||
| get_buffer(pb, str, str_size); | |||
| str[str_size] = 0; | |||
| } | |||
| av_metadata_set(&c->fc->metadata, key, str); | |||
| av_metadata_set2(&c->fc->metadata, key, str, 0); | |||
| if (*language && strcmp(language, "und")) { | |||
| snprintf(key2, sizeof(key2), "%s-%s", key, language); | |||
| av_metadata_set(&c->fc->metadata, key2, str); | |||
| av_metadata_set2(&c->fc->metadata, key2, str, 0); | |||
| } | |||
| } | |||
| #ifdef DEBUG_METADATA | |||
| @@ -569,10 +569,10 @@ static int mov_read_ftyp(MOVContext *c, ByteIOContext *pb, MOVAtom atom) | |||
| if (strcmp(type, "qt ")) | |||
| c->isom = 1; | |||
| av_log(c->fc, AV_LOG_DEBUG, "ISO: File Type Major Brand: %.4s\n",(char *)&type); | |||
| av_metadata_set(&c->fc->metadata, "major_brand", type); | |||
| av_metadata_set2(&c->fc->metadata, "major_brand", type, 0); | |||
| minor_ver = get_be32(pb); /* minor version */ | |||
| snprintf(minor_ver_str, sizeof(minor_ver_str), "%d", minor_ver); | |||
| av_metadata_set(&c->fc->metadata, "minor_version", minor_ver_str); | |||
| av_metadata_set2(&c->fc->metadata, "minor_version", minor_ver_str, 0); | |||
| comp_brand_size = atom.size - 8; | |||
| if (comp_brand_size < 0) | |||
| @@ -582,7 +582,7 @@ static int mov_read_ftyp(MOVContext *c, ByteIOContext *pb, MOVAtom atom) | |||
| return AVERROR(ENOMEM); | |||
| get_buffer(pb, comp_brands_str, comp_brand_size); | |||
| comp_brands_str[comp_brand_size] = 0; | |||
| av_metadata_set(&c->fc->metadata, "compatible_brands", comp_brands_str); | |||
| av_metadata_set2(&c->fc->metadata, "compatible_brands", comp_brands_str, 0); | |||
| av_freep(&comp_brands_str); | |||
| return 0; | |||
| @@ -637,7 +637,7 @@ static int mov_read_mdhd(MOVContext *c, ByteIOContext *pb, MOVAtom atom) | |||
| lang = get_be16(pb); /* language */ | |||
| if (ff_mov_lang_to_iso639(lang, language)) | |||
| av_metadata_set(&st->metadata, "language", language); | |||
| av_metadata_set2(&st->metadata, "language", language, 0); | |||
| get_be16(pb); /* quality */ | |||
| return 0; | |||
| @@ -963,7 +963,7 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len | |||
| language[1] = get8(&p, desc_end); | |||
| language[2] = get8(&p, desc_end); | |||
| language[3] = 0; | |||
| av_metadata_set(&st->metadata, "language", language); | |||
| av_metadata_set2(&st->metadata, "language", language, 0); | |||
| break; | |||
| case 0x59: /* subtitling descriptor */ | |||
| language[0] = get8(&p, desc_end); | |||
| @@ -974,14 +974,14 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len | |||
| comp_page = get16(&p, desc_end); | |||
| anc_page = get16(&p, desc_end); | |||
| st->codec->sub_id = (anc_page << 16) | comp_page; | |||
| av_metadata_set(&st->metadata, "language", language); | |||
| av_metadata_set2(&st->metadata, "language", language, 0); | |||
| break; | |||
| case 0x0a: /* ISO 639 language descriptor */ | |||
| language[0] = get8(&p, desc_end); | |||
| language[1] = get8(&p, desc_end); | |||
| language[2] = get8(&p, desc_end); | |||
| language[3] = 0; | |||
| av_metadata_set(&st->metadata, "language", language); | |||
| av_metadata_set2(&st->metadata, "language", language, 0); | |||
| break; | |||
| case 0x05: /* registration descriptor */ | |||
| st->codec->codec_tag = bytestream_get_le32(&p); | |||
| @@ -1109,8 +1109,8 @@ static void sdt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len | |||
| if (name) { | |||
| AVProgram *program = av_new_program(ts->stream, sid); | |||
| if(program) { | |||
| av_metadata_set(&program->metadata, "name", name); | |||
| av_metadata_set(&program->metadata, "provider_name", provider_name); | |||
| av_metadata_set2(&program->metadata, "name", name, 0); | |||
| av_metadata_set2(&program->metadata, "provider_name", provider_name, 0); | |||
| } | |||
| } | |||
| av_free(name); | |||
| @@ -339,7 +339,7 @@ static int nsv_parse_NSVf_header(AVFormatContext *s, AVFormatParameters *ap) | |||
| break; | |||
| *p++ = '\0'; | |||
| PRINT(("NSV NSVf INFO: %s='%s'\n", token, value)); | |||
| av_metadata_set(&s->metadata, token, value); | |||
| av_metadata_set2(&s->metadata, token, value, 0); | |||
| } | |||
| av_free(strings); | |||
| } | |||
| @@ -452,7 +452,7 @@ static int decode_info_header(NUTContext *nut){ | |||
| else metadata= &s->metadata; | |||
| if(metadata && strcasecmp(name,"Uses") | |||
| && strcasecmp(name,"Depends") && strcasecmp(name,"Replaces")) | |||
| av_metadata_set(metadata, name, str_value); | |||
| av_metadata_set2(metadata, name, str_value, 0); | |||
| } | |||
| } | |||
| @@ -97,7 +97,7 @@ static int r3d_read_red1(AVFormatContext *s) | |||
| get_buffer(s->pb, filename, 257); | |||
| filename[sizeof(filename)-1] = 0; | |||
| av_metadata_set(&st->metadata, "filename", filename); | |||
| av_metadata_set2(&st->metadata, "filename", filename, 0); | |||
| dprintf(s, "filename %s\n", filename); | |||
| dprintf(s, "resolution %dx%d\n", st->codec->width, st->codec->height); | |||
| @@ -121,7 +121,7 @@ static void rm_read_metadata(AVFormatContext *s, int wide) | |||
| for (i=0; i<FF_ARRAY_ELEMS(ff_rm_metadata); i++) { | |||
| int len = wide ? get_be16(s->pb) : get_byte(s->pb); | |||
| get_strl(s->pb, buf, sizeof(buf), len); | |||
| av_metadata_set(&s->metadata, ff_rm_metadata[i], buf); | |||
| av_metadata_set2(&s->metadata, ff_rm_metadata[i], buf, 0); | |||
| } | |||
| } | |||
| @@ -131,11 +131,11 @@ static int rpl_read_header(AVFormatContext *s, AVFormatParameters *ap) | |||
| // for the text in a few cases; samples needed.) | |||
| error |= read_line(pb, line, sizeof(line)); // ARMovie | |||
| error |= read_line(pb, line, sizeof(line)); // movie name | |||
| av_metadata_set(&s->metadata, "title" , line); | |||
| av_metadata_set2(&s->metadata, "title" , line, 0); | |||
| error |= read_line(pb, line, sizeof(line)); // date/copyright | |||
| av_metadata_set(&s->metadata, "copyright", line); | |||
| av_metadata_set2(&s->metadata, "copyright", line, 0); | |||
| error |= read_line(pb, line, sizeof(line)); // author and other | |||
| av_metadata_set(&s->metadata, "author" , line); | |||
| av_metadata_set2(&s->metadata, "author" , line, 0); | |||
| // video headers | |||
| vst = av_new_stream(s, 0); | |||
| @@ -379,11 +379,11 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1, | |||
| } | |||
| break; | |||
| case 's': | |||
| av_metadata_set(&s->metadata, "title", p); | |||
| av_metadata_set2(&s->metadata, "title", p, 0); | |||
| break; | |||
| case 'i': | |||
| if (s->nb_streams == 0) { | |||
| av_metadata_set(&s->metadata, "comment", p); | |||
| av_metadata_set2(&s->metadata, "comment", p, 0); | |||
| break; | |||
| } | |||
| break; | |||
| @@ -2544,7 +2544,7 @@ AVChapter *ff_new_chapter(AVFormatContext *s, int id, AVRational time_base, int6 | |||
| #if LIBAVFORMAT_VERSION_INT < (53<<16) | |||
| av_free(chapter->title); | |||
| #endif | |||
| av_metadata_set(&chapter->metadata, "title", title); | |||
| av_metadata_set2(&chapter->metadata, "title", title, 0); | |||
| chapter->id = id; | |||
| chapter->time_base= time_base; | |||
| chapter->start = start; | |||