mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 12:36:41 +08:00 
			
		
		
		
	libavformat/avio: Add avio_get_dyn_buf function
This commit adds the avio_get_dyn_buf function which allows accessing the content of a DynBuffer without destroying it. This is required in matroskaenc for preliminary writing (correct) mkv headers. Context for this change is fixing regression bug #5977. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		 softworkz
					softworkz
				
			
				
					committed by
					
						 Michael Niedermayer
						Michael Niedermayer
					
				
			
			
				
	
			
			
			 Michael Niedermayer
						Michael Niedermayer
					
				
			
						parent
						
							90ac9f4094
						
					
				
				
					commit
					9488032e10
				
			| @@ -15,6 +15,9 @@ libavutil:     2015-08-28 | |||||||
|  |  | ||||||
| API changes, most recent first: | API changes, most recent first: | ||||||
|  |  | ||||||
|  | 2017-01-06 - xxxxxxx - lavf 57.62.100- avio.h | ||||||
|  |   Add avio_get_dyn_buf() | ||||||
|  |  | ||||||
| 2016-12-10 - xxxxxxx - lavu xx.xx.100- imgutils.h | 2016-12-10 - xxxxxxx - lavu xx.xx.100- imgutils.h | ||||||
|   Add av_image_check_size2() |   Add av_image_check_size2() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -703,6 +703,18 @@ int avio_closep(AVIOContext **s); | |||||||
|  */ |  */ | ||||||
| int avio_open_dyn_buf(AVIOContext **s); | int avio_open_dyn_buf(AVIOContext **s); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Return the written size and a pointer to the buffer. | ||||||
|  |  * The AVIOContext stream is left intact. | ||||||
|  |  * The buffer must NOT be freed. | ||||||
|  |  * No padding is added to the buffer. | ||||||
|  |  * | ||||||
|  |  * @param s IO context | ||||||
|  |  * @param pbuffer pointer to a byte buffer | ||||||
|  |  * @return the length of the byte buffer | ||||||
|  |  */ | ||||||
|  | int avio_get_dyn_buf(AVIOContext *s, uint8_t **pbuffer); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Return the written size and a pointer to the buffer. The buffer |  * Return the written size and a pointer to the buffer. The buffer | ||||||
|  * must be freed with av_free(). |  * must be freed with av_free(). | ||||||
|   | |||||||
| @@ -1277,6 +1277,23 @@ int ffio_open_dyn_packet_buf(AVIOContext **s, int max_packet_size) | |||||||
|     return url_open_dyn_buf_internal(s, max_packet_size); |     return url_open_dyn_buf_internal(s, max_packet_size); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | int avio_get_dyn_buf(AVIOContext *s, uint8_t **pbuffer) | ||||||
|  | { | ||||||
|  |     DynBuffer *d; | ||||||
|  |  | ||||||
|  |     if (!s) { | ||||||
|  |         *pbuffer = NULL; | ||||||
|  |         return 0; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     avio_flush(s); | ||||||
|  |  | ||||||
|  |     d = s->opaque; | ||||||
|  |     *pbuffer = d->buffer; | ||||||
|  |  | ||||||
|  |     return d->size; | ||||||
|  | } | ||||||
|  |  | ||||||
| int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer) | int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer) | ||||||
| { | { | ||||||
|     DynBuffer *d; |     DynBuffer *d; | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ | |||||||
| // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) | // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) | ||||||
| // Also please add any ticket numbers that you believe might be affected here | // Also please add any ticket numbers that you believe might be affected here | ||||||
| #define LIBAVFORMAT_VERSION_MAJOR  57 | #define LIBAVFORMAT_VERSION_MAJOR  57 | ||||||
| #define LIBAVFORMAT_VERSION_MINOR  61 | #define LIBAVFORMAT_VERSION_MINOR  62 | ||||||
| #define LIBAVFORMAT_VERSION_MICRO 100 | #define LIBAVFORMAT_VERSION_MICRO 100 | ||||||
|  |  | ||||||
| #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user