| OLD | NEW |
| 1 /* | 1 /* |
| 2 * AVI muxer | 2 * AVI muxer |
| 3 * Copyright (c) 2000 Fabrice Bellard | 3 * Copyright (c) 2000 Fabrice Bellard |
| 4 * | 4 * |
| 5 * This file is part of FFmpeg. | 5 * This file is part of FFmpeg. |
| 6 * | 6 * |
| 7 * FFmpeg is free software; you can redistribute it and/or | 7 * FFmpeg is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Lesser General Public | 8 * modify it under the terms of the GNU Lesser General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2.1 of the License, or (at your option) any later version. | 10 * version 2.1 of the License, or (at your option) any later version. |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 break; | 283 break; |
| 284 case AVMEDIA_TYPE_AUDIO: | 284 case AVMEDIA_TYPE_AUDIO: |
| 285 if (ff_put_wav_header(pb, stream) < 0) { | 285 if (ff_put_wav_header(pb, stream) < 0) { |
| 286 return -1; | 286 return -1; |
| 287 } | 287 } |
| 288 break; | 288 break; |
| 289 default: | 289 default: |
| 290 return -1; | 290 return -1; |
| 291 } | 291 } |
| 292 ff_end_tag(pb, strf); | 292 ff_end_tag(pb, strf); |
| 293 if ((t = av_metadata_get(s->streams[i]->metadata, "strn", NULL, 0))) { | 293 if ((t = av_metadata_get(s->streams[i]->metadata, "title", NULL, 0))) { |
| 294 avi_write_info_tag(s->pb, t->key, t->value); | |
| 295 t = NULL; | |
| 296 } | |
| 297 //FIXME a limitation of metadata conversion system | |
| 298 else if ((t = av_metadata_get(s->streams[i]->metadata, "INAM", NULL, 0))
) { | |
| 299 avi_write_info_tag(s->pb, "strn", t->value); | 294 avi_write_info_tag(s->pb, "strn", t->value); |
| 300 t = NULL; | 295 t = NULL; |
| 301 } | 296 } |
| 302 } | 297 } |
| 303 | 298 |
| 304 if (!url_is_streamed(pb)) { | 299 if (!url_is_streamed(pb)) { |
| 305 unsigned char tag[5]; | 300 unsigned char tag[5]; |
| 306 int j; | 301 int j; |
| 307 | 302 |
| 308 /* Starting to lay out AVI OpenDML master index. | 303 /* Starting to lay out AVI OpenDML master index. |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 put_le32(pb, 248); | 363 put_le32(pb, 248); |
| 369 for (i = 0; i < 248; i+= 4) | 364 for (i = 0; i < 248; i+= 4) |
| 370 put_le32(pb, 0); | 365 put_le32(pb, 0); |
| 371 ff_end_tag(pb, avi->odml_list); | 366 ff_end_tag(pb, avi->odml_list); |
| 372 } | 367 } |
| 373 | 368 |
| 374 ff_end_tag(pb, list1); | 369 ff_end_tag(pb, list1); |
| 375 | 370 |
| 376 list2 = ff_start_tag(pb, "LIST"); | 371 list2 = ff_start_tag(pb, "LIST"); |
| 377 put_tag(pb, "INFO"); | 372 put_tag(pb, "INFO"); |
| 373 ff_metadata_conv(&s->metadata, ff_avi_metadata_conv, NULL); |
| 378 for (i = 0; *ff_avi_tags[i]; i++) { | 374 for (i = 0; *ff_avi_tags[i]; i++) { |
| 379 if ((t = av_metadata_get(s->metadata, ff_avi_tags[i], NULL, AV_METADATA_
MATCH_CASE))) | 375 if ((t = av_metadata_get(s->metadata, ff_avi_tags[i], NULL, AV_METADATA_
MATCH_CASE))) |
| 380 avi_write_info_tag(s->pb, t->key, t->value); | 376 avi_write_info_tag(s->pb, t->key, t->value); |
| 381 } | 377 } |
| 382 ff_end_tag(pb, list2); | 378 ff_end_tag(pb, list2); |
| 383 | 379 |
| 384 /* some padding for easier tag editing */ | 380 /* some padding for easier tag editing */ |
| 385 list2 = ff_start_tag(pb, "JUNK"); | 381 list2 = ff_start_tag(pb, "JUNK"); |
| 386 for (i = 0; i < 1016; i += 4) | 382 for (i = 0; i < 1016; i += 4) |
| 387 put_le32(pb, 0); | 383 put_le32(pb, 0); |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 "video/x-msvideo", | 636 "video/x-msvideo", |
| 641 "avi", | 637 "avi", |
| 642 sizeof(AVIContext), | 638 sizeof(AVIContext), |
| 643 CODEC_ID_MP2, | 639 CODEC_ID_MP2, |
| 644 CODEC_ID_MPEG4, | 640 CODEC_ID_MPEG4, |
| 645 avi_write_header, | 641 avi_write_header, |
| 646 avi_write_packet, | 642 avi_write_packet, |
| 647 avi_write_trailer, | 643 avi_write_trailer, |
| 648 .codec_tag= (const AVCodecTag* const []){ff_codec_bmp_tags, ff_codec_wav_tag
s, 0}, | 644 .codec_tag= (const AVCodecTag* const []){ff_codec_bmp_tags, ff_codec_wav_tag
s, 0}, |
| 649 .flags= AVFMT_VARIABLE_FPS, | 645 .flags= AVFMT_VARIABLE_FPS, |
| 650 .metadata_conv = ff_avi_metadata_conv, | |
| 651 }; | 646 }; |
| OLD | NEW |