You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Merge commit 'f9cc6883a4e5cf72cbfa21d17e1908a2a432f6bd'
* commit 'f9cc6883a4e5cf72cbfa21d17e1908a2a432f6bd': mp3enc: add an option for disabling the Xing frame. Conflicts: doc/muxers.texi libavformat/mp3enc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -544,9 +544,10 @@ optionally an ID3v1 tag at the end. ID3v2.3 and ID3v2.4 are supported, the | |||||||
| @code{id3v2_version} option controls which one is used. The legacy ID3v1 tag is | @code{id3v2_version} option controls which one is used. The legacy ID3v1 tag is | ||||||
| not written by default, but may be enabled with the @code{write_id3v1} option. | not written by default, but may be enabled with the @code{write_id3v1} option. | ||||||
|  |  | ||||||
| For seekable output the muxer also writes a Xing frame at the beginning, which | The muxer may also write a Xing frame at the beginning, which contains the | ||||||
| contains the number of frames in the file. It is useful for computing duration | number of frames in the file. It is useful for computing duration of VBR files. | ||||||
| of VBR files. | The Xing frame is written if the output stream is seekable and if the | ||||||
|  | @code{write_xing} option is set to 1 (the default). | ||||||
|  |  | ||||||
| The muxer supports writing ID3v2 attached pictures (APIC frames). The pictures | The muxer supports writing ID3v2 attached pictures (APIC frames). The pictures | ||||||
| are supplied to the muxer in form of a video stream with a single packet. There | are supplied to the muxer in form of a video stream with a single packet. There | ||||||
|   | |||||||
| @@ -85,6 +85,7 @@ typedef struct MP3Context { | |||||||
|     ID3v2EncContext id3; |     ID3v2EncContext id3; | ||||||
|     int id3v2_version; |     int id3v2_version; | ||||||
|     int write_id3v1; |     int write_id3v1; | ||||||
|  |     int write_xing; | ||||||
|  |  | ||||||
|     /* xing header */ |     /* xing header */ | ||||||
|     int64_t xing_offset; |     int64_t xing_offset; | ||||||
| @@ -125,7 +126,7 @@ static int mp3_write_xing(AVFormatContext *s) | |||||||
|     int              needed; |     int              needed; | ||||||
|     const char      *vendor = (codec->flags & CODEC_FLAG_BITEXACT) ? "Lavf" : LIBAVFORMAT_IDENT; |     const char      *vendor = (codec->flags & CODEC_FLAG_BITEXACT) ? "Lavf" : LIBAVFORMAT_IDENT; | ||||||
|  |  | ||||||
|     if (!s->pb->seekable) |     if (!s->pb->seekable || !mp3->write_xing) | ||||||
|         return 0; |         return 0; | ||||||
|  |  | ||||||
|     for (i = 0; i < FF_ARRAY_ELEMS(avpriv_mpa_freq_tab); i++) { |     for (i = 0; i < FF_ARRAY_ELEMS(avpriv_mpa_freq_tab); i++) { | ||||||
| @@ -396,6 +397,8 @@ static const AVOption options[] = { | |||||||
|       offsetof(MP3Context, id3v2_version), AV_OPT_TYPE_INT, {.i64 = 4}, 3, 4, AV_OPT_FLAG_ENCODING_PARAM}, |       offsetof(MP3Context, id3v2_version), AV_OPT_TYPE_INT, {.i64 = 4}, 3, 4, AV_OPT_FLAG_ENCODING_PARAM}, | ||||||
|     { "write_id3v1", "Enable ID3v1 writing. ID3v1 tags are written in UTF-8 which may not be supported by most software.", |     { "write_id3v1", "Enable ID3v1 writing. ID3v1 tags are written in UTF-8 which may not be supported by most software.", | ||||||
|       offsetof(MP3Context, write_id3v1), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, |       offsetof(MP3Context, write_id3v1), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, | ||||||
|  |     { "write_xing",  "Write the Xing header containing file duration.", | ||||||
|  |       offsetof(MP3Context, write_xing),  AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, | ||||||
|     { NULL }, |     { NULL }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user