You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avutil: remove deprecated FF_API_FIFO_OLD_API
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		
							
								
								
									
										219
									
								
								libavutil/fifo.c
									
									
									
									
									
								
							
							
						
						
									
										219
									
								
								libavutil/fifo.c
									
									
									
									
									
								
							| @@ -290,222 +290,3 @@ void av_fifo_freep2(AVFifo **f) | ||||
|         av_freep(f); | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
| #if FF_API_FIFO_OLD_API | ||||
| #include "internal.h" | ||||
| FF_DISABLE_DEPRECATION_WARNINGS | ||||
| #define OLD_FIFO_SIZE_MAX (size_t)FFMIN3(INT_MAX, UINT32_MAX, SIZE_MAX) | ||||
|  | ||||
| AVFifoBuffer *av_fifo_alloc_array(size_t nmemb, size_t size) | ||||
| { | ||||
|     AVFifoBuffer *f; | ||||
|     void *buffer; | ||||
|  | ||||
|     if (nmemb > OLD_FIFO_SIZE_MAX / size) | ||||
|         return NULL; | ||||
|  | ||||
|     buffer = av_realloc_array(NULL, nmemb, size); | ||||
|     if (!buffer) | ||||
|         return NULL; | ||||
|     f = av_mallocz(sizeof(AVFifoBuffer)); | ||||
|     if (!f) { | ||||
|         av_free(buffer); | ||||
|         return NULL; | ||||
|     } | ||||
|     f->buffer = buffer; | ||||
|     f->end    = f->buffer + nmemb * size; | ||||
|     av_fifo_reset(f); | ||||
|     return f; | ||||
| } | ||||
|  | ||||
| AVFifoBuffer *av_fifo_alloc(unsigned int size) | ||||
| { | ||||
|     return av_fifo_alloc_array(size, 1); | ||||
| } | ||||
|  | ||||
| void av_fifo_free(AVFifoBuffer *f) | ||||
| { | ||||
|     if (f) { | ||||
|         av_freep(&f->buffer); | ||||
|         av_free(f); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void av_fifo_freep(AVFifoBuffer **f) | ||||
| { | ||||
|     if (f) { | ||||
|         av_fifo_free(*f); | ||||
|         *f = NULL; | ||||
|     } | ||||
| } | ||||
|  | ||||
| void av_fifo_reset(AVFifoBuffer *f) | ||||
| { | ||||
|     f->wptr = f->rptr = f->buffer; | ||||
|     f->wndx = f->rndx = 0; | ||||
| } | ||||
|  | ||||
| int av_fifo_size(const AVFifoBuffer *f) | ||||
| { | ||||
|     return (uint32_t)(f->wndx - f->rndx); | ||||
| } | ||||
|  | ||||
| int av_fifo_space(const AVFifoBuffer *f) | ||||
| { | ||||
|     return f->end - f->buffer - av_fifo_size(f); | ||||
| } | ||||
|  | ||||
| int av_fifo_realloc2(AVFifoBuffer *f, unsigned int new_size) | ||||
| { | ||||
|     unsigned int old_size = f->end - f->buffer; | ||||
|  | ||||
|     if (new_size > OLD_FIFO_SIZE_MAX) | ||||
|         return AVERROR(EINVAL); | ||||
|  | ||||
|     if (old_size < new_size) { | ||||
|         size_t offset_r = f->rptr - f->buffer; | ||||
|         size_t offset_w = f->wptr - f->buffer; | ||||
|         uint8_t *tmp; | ||||
|  | ||||
|         tmp = av_realloc(f->buffer, new_size); | ||||
|         if (!tmp) | ||||
|             return AVERROR(ENOMEM); | ||||
|  | ||||
|         // move the data from the beginning of the ring buffer | ||||
|         // to the newly allocated space | ||||
|         // the second condition distinguishes full vs empty fifo | ||||
|         if (offset_w <= offset_r && av_fifo_size(f)) { | ||||
|             const size_t copy = FFMIN(new_size - old_size, offset_w); | ||||
|             memcpy(tmp + old_size, tmp, copy); | ||||
|             if (copy < offset_w) { | ||||
|                 memmove(tmp, tmp + copy , offset_w - copy); | ||||
|                 offset_w -= copy; | ||||
|             } else | ||||
|                 offset_w = old_size + copy; | ||||
|         } | ||||
|  | ||||
|         f->buffer = tmp; | ||||
|         f->end    = f->buffer + new_size; | ||||
|         f->rptr   = f->buffer + offset_r; | ||||
|         f->wptr   = f->buffer + offset_w; | ||||
|     } | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| int av_fifo_grow(AVFifoBuffer *f, unsigned int size) | ||||
| { | ||||
|     unsigned int old_size = f->end - f->buffer; | ||||
|     if(size + (unsigned)av_fifo_size(f) < size) | ||||
|         return AVERROR(EINVAL); | ||||
|  | ||||
|     size += av_fifo_size(f); | ||||
|  | ||||
|     if (old_size < size) | ||||
|         return av_fifo_realloc2(f, FFMAX(size, 2*old_size)); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| /* src must NOT be const as it can be a context for func that may need | ||||
|  * updating (like a pointer or byte counter) */ | ||||
| int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, | ||||
|                           int (*func)(void *, void *, int)) | ||||
| { | ||||
|     int total = size; | ||||
|     uint32_t wndx= f->wndx; | ||||
|     uint8_t *wptr= f->wptr; | ||||
|  | ||||
|     if (size > av_fifo_space(f)) | ||||
|         return AVERROR(ENOSPC); | ||||
|  | ||||
|     do { | ||||
|         int len = FFMIN(f->end - wptr, size); | ||||
|         if (func) { | ||||
|             len = func(src, wptr, len); | ||||
|             if (len <= 0) | ||||
|                 break; | ||||
|         } else { | ||||
|             memcpy(wptr, src, len); | ||||
|             src = (uint8_t *)src + len; | ||||
|         } | ||||
|         wptr += len; | ||||
|         if (wptr >= f->end) | ||||
|             wptr = f->buffer; | ||||
|         wndx    += len; | ||||
|         size    -= len; | ||||
|     } while (size > 0); | ||||
|     f->wndx= wndx; | ||||
|     f->wptr= wptr; | ||||
|     return total - size; | ||||
| } | ||||
|  | ||||
| int av_fifo_generic_peek_at(AVFifoBuffer *f, void *dest, int offset, int buf_size, void (*func)(void*, void*, int)) | ||||
| { | ||||
|     uint8_t *rptr = f->rptr; | ||||
|  | ||||
|     if (offset < 0 || buf_size > av_fifo_size(f) - offset) | ||||
|         return AVERROR(EINVAL); | ||||
|  | ||||
|     if (offset >= f->end - rptr) | ||||
|         rptr += offset - (f->end - f->buffer); | ||||
|     else | ||||
|         rptr += offset; | ||||
|  | ||||
|     while (buf_size > 0) { | ||||
|         int len; | ||||
|  | ||||
|         if (rptr >= f->end) | ||||
|             rptr -= f->end - f->buffer; | ||||
|  | ||||
|         len = FFMIN(f->end - rptr, buf_size); | ||||
|         if (func) | ||||
|             func(dest, rptr, len); | ||||
|         else { | ||||
|             memcpy(dest, rptr, len); | ||||
|             dest = (uint8_t *)dest + len; | ||||
|         } | ||||
|  | ||||
|         buf_size -= len; | ||||
|         rptr     += len; | ||||
|     } | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| int av_fifo_generic_peek(AVFifoBuffer *f, void *dest, int buf_size, | ||||
|                          void (*func)(void *, void *, int)) | ||||
| { | ||||
|     return av_fifo_generic_peek_at(f, dest, 0, buf_size, func); | ||||
| } | ||||
|  | ||||
| int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, | ||||
|                          void (*func)(void *, void *, int)) | ||||
| { | ||||
|     if (buf_size > av_fifo_size(f)) | ||||
|         return AVERROR(EINVAL); | ||||
|  | ||||
|     do { | ||||
|         int len = FFMIN(f->end - f->rptr, buf_size); | ||||
|         if (func) | ||||
|             func(dest, f->rptr, len); | ||||
|         else { | ||||
|             memcpy(dest, f->rptr, len); | ||||
|             dest = (uint8_t *)dest + len; | ||||
|         } | ||||
|         av_fifo_drain(f, len); | ||||
|         buf_size -= len; | ||||
|     } while (buf_size > 0); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| /** Discard data from the FIFO. */ | ||||
| void av_fifo_drain(AVFifoBuffer *f, int size) | ||||
| { | ||||
|     av_assert2(av_fifo_size(f) >= size); | ||||
|     f->rptr += size; | ||||
|     if (f->rptr >= f->end) | ||||
|         f->rptr -= f->end - f->buffer; | ||||
|     f->rndx += size; | ||||
| } | ||||
| FF_ENABLE_DEPRECATION_WARNINGS | ||||
| #endif | ||||
|   | ||||
							
								
								
									
										179
									
								
								libavutil/fifo.h
									
									
									
									
									
								
							
							
						
						
									
										179
									
								
								libavutil/fifo.h
									
									
									
									
									
								
							| @@ -239,185 +239,6 @@ void av_fifo_reset2(AVFifo *f); | ||||
|  */ | ||||
| void av_fifo_freep2(AVFifo **f); | ||||
|  | ||||
|  | ||||
| #if FF_API_FIFO_OLD_API | ||||
| typedef struct AVFifoBuffer { | ||||
|     uint8_t *buffer; | ||||
|     uint8_t *rptr, *wptr, *end; | ||||
|     uint32_t rndx, wndx; | ||||
| } AVFifoBuffer; | ||||
|  | ||||
| /** | ||||
|  * Initialize an AVFifoBuffer. | ||||
|  * @param size of FIFO | ||||
|  * @return AVFifoBuffer or NULL in case of memory allocation failure | ||||
|  * @deprecated use av_fifo_alloc2() | ||||
|  */ | ||||
| attribute_deprecated | ||||
| AVFifoBuffer *av_fifo_alloc(unsigned int size); | ||||
|  | ||||
| /** | ||||
|  * Initialize an AVFifoBuffer. | ||||
|  * @param nmemb number of elements | ||||
|  * @param size  size of the single element | ||||
|  * @return AVFifoBuffer or NULL in case of memory allocation failure | ||||
|  * @deprecated use av_fifo_alloc2() | ||||
|  */ | ||||
| attribute_deprecated | ||||
| AVFifoBuffer *av_fifo_alloc_array(size_t nmemb, size_t size); | ||||
|  | ||||
| /** | ||||
|  * Free an AVFifoBuffer. | ||||
|  * @param f AVFifoBuffer to free | ||||
|  * @deprecated use the AVFifo API with av_fifo_freep2() | ||||
|  */ | ||||
| attribute_deprecated | ||||
| void av_fifo_free(AVFifoBuffer *f); | ||||
|  | ||||
| /** | ||||
|  * Free an AVFifoBuffer and reset pointer to NULL. | ||||
|  * @param f AVFifoBuffer to free | ||||
|  * @deprecated use the AVFifo API with av_fifo_freep2() | ||||
|  */ | ||||
| attribute_deprecated | ||||
| void av_fifo_freep(AVFifoBuffer **f); | ||||
|  | ||||
| /** | ||||
|  * Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied. | ||||
|  * @param f AVFifoBuffer to reset | ||||
|  * @deprecated use av_fifo_reset2() with the new AVFifo-API | ||||
|  */ | ||||
| attribute_deprecated | ||||
| void av_fifo_reset(AVFifoBuffer *f); | ||||
|  | ||||
| /** | ||||
|  * Return the amount of data in bytes in the AVFifoBuffer, that is the | ||||
|  * amount of data you can read from it. | ||||
|  * @param f AVFifoBuffer to read from | ||||
|  * @return size | ||||
|  * @deprecated use av_fifo_can_read() with the new AVFifo-API | ||||
|  */ | ||||
| attribute_deprecated | ||||
| int av_fifo_size(const AVFifoBuffer *f); | ||||
|  | ||||
| /** | ||||
|  * Return the amount of space in bytes in the AVFifoBuffer, that is the | ||||
|  * amount of data you can write into it. | ||||
|  * @param f AVFifoBuffer to write into | ||||
|  * @return size | ||||
|  * @deprecated use av_fifo_can_write() with the new AVFifo-API | ||||
|  */ | ||||
| attribute_deprecated | ||||
| int av_fifo_space(const AVFifoBuffer *f); | ||||
|  | ||||
| /** | ||||
|  * Feed data at specific position from an AVFifoBuffer to a user-supplied callback. | ||||
|  * Similar as av_fifo_gereric_read but without discarding data. | ||||
|  * @param f AVFifoBuffer to read from | ||||
|  * @param offset offset from current read position | ||||
|  * @param buf_size number of bytes to read | ||||
|  * @param func generic read function | ||||
|  * @param dest data destination | ||||
|  * | ||||
|  * @return a non-negative number on success, a negative error code on failure | ||||
|  * | ||||
|  * @deprecated use the new AVFifo-API with av_fifo_peek() when func == NULL, | ||||
|  *             av_fifo_peek_to_cb() otherwise | ||||
|  */ | ||||
| attribute_deprecated | ||||
| int av_fifo_generic_peek_at(AVFifoBuffer *f, void *dest, int offset, int buf_size, void (*func)(void*, void*, int)); | ||||
|  | ||||
| /** | ||||
|  * Feed data from an AVFifoBuffer to a user-supplied callback. | ||||
|  * Similar as av_fifo_gereric_read but without discarding data. | ||||
|  * @param f AVFifoBuffer to read from | ||||
|  * @param buf_size number of bytes to read | ||||
|  * @param func generic read function | ||||
|  * @param dest data destination | ||||
|  * | ||||
|  * @return a non-negative number on success, a negative error code on failure | ||||
|  * | ||||
|  * @deprecated use the new AVFifo-API with av_fifo_peek() when func == NULL, | ||||
|  *             av_fifo_peek_to_cb() otherwise | ||||
|  */ | ||||
| attribute_deprecated | ||||
| int av_fifo_generic_peek(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); | ||||
|  | ||||
| /** | ||||
|  * Feed data from an AVFifoBuffer to a user-supplied callback. | ||||
|  * @param f AVFifoBuffer to read from | ||||
|  * @param buf_size number of bytes to read | ||||
|  * @param func generic read function | ||||
|  * @param dest data destination | ||||
|  * | ||||
|  * @return a non-negative number on success, a negative error code on failure | ||||
|  * | ||||
|  * @deprecated use the new AVFifo-API with av_fifo_read() when func == NULL, | ||||
|  *             av_fifo_read_to_cb() otherwise | ||||
|  */ | ||||
| attribute_deprecated | ||||
| int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); | ||||
|  | ||||
| /** | ||||
|  * Feed data from a user-supplied callback to an AVFifoBuffer. | ||||
|  * @param f AVFifoBuffer to write to | ||||
|  * @param src data source; non-const since it may be used as a | ||||
|  * modifiable context by the function defined in func | ||||
|  * @param size number of bytes to write | ||||
|  * @param func generic write function; the first parameter is src, | ||||
|  * the second is dest_buf, the third is dest_buf_size. | ||||
|  * func must return the number of bytes written to dest_buf, or <= 0 to | ||||
|  * indicate no more data available to write. | ||||
|  * If func is NULL, src is interpreted as a simple byte array for source data. | ||||
|  * @return the number of bytes written to the FIFO or a negative error code on failure | ||||
|  * | ||||
|  * @deprecated use the new AVFifo-API with av_fifo_write() when func == NULL, | ||||
|  *             av_fifo_write_from_cb() otherwise | ||||
|  */ | ||||
| attribute_deprecated | ||||
| int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)); | ||||
|  | ||||
| /** | ||||
|  * Resize an AVFifoBuffer. | ||||
|  * In case of reallocation failure, the old FIFO is kept unchanged. | ||||
|  * | ||||
|  * @param f AVFifoBuffer to resize | ||||
|  * @param size new AVFifoBuffer size in bytes | ||||
|  * @return <0 for failure, >=0 otherwise | ||||
|  * | ||||
|  * @deprecated use the new AVFifo-API with av_fifo_grow2() to increase FIFO size, | ||||
|  *             decreasing FIFO size is not supported | ||||
|  */ | ||||
| attribute_deprecated | ||||
| int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size); | ||||
|  | ||||
| /** | ||||
|  * Enlarge an AVFifoBuffer. | ||||
|  * In case of reallocation failure, the old FIFO is kept unchanged. | ||||
|  * The new fifo size may be larger than the requested size. | ||||
|  * | ||||
|  * @param f AVFifoBuffer to resize | ||||
|  * @param additional_space the amount of space in bytes to allocate in addition to av_fifo_size() | ||||
|  * @return <0 for failure, >=0 otherwise | ||||
|  * | ||||
|  * @deprecated use the new AVFifo-API with av_fifo_grow2(); note that unlike | ||||
|  * this function it adds to the allocated size, rather than to the used size | ||||
|  */ | ||||
| attribute_deprecated | ||||
| int av_fifo_grow(AVFifoBuffer *f, unsigned int additional_space); | ||||
|  | ||||
| /** | ||||
|  * Read and discard the specified amount of data from an AVFifoBuffer. | ||||
|  * @param f AVFifoBuffer to read from | ||||
|  * @param size amount of data to read in bytes | ||||
|  * | ||||
|  * @deprecated use the new AVFifo-API with av_fifo_drain2() | ||||
|  */ | ||||
| attribute_deprecated | ||||
| void av_fifo_drain(AVFifoBuffer *f, int size); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|  */ | ||||
|   | ||||
| @@ -105,7 +105,6 @@ | ||||
|  * @{ | ||||
|  */ | ||||
|  | ||||
| #define FF_API_FIFO_OLD_API             (LIBAVUTIL_VERSION_MAJOR < 59) | ||||
| #define FF_API_XVMC                     (LIBAVUTIL_VERSION_MAJOR < 59) | ||||
| #define FF_API_OLD_CHANNEL_LAYOUT       (LIBAVUTIL_VERSION_MAJOR < 59) | ||||
| #define FF_API_AV_FOPEN_UTF8            (LIBAVUTIL_VERSION_MAJOR < 59) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user