| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -19,6 +19,7 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#include <stdlib.h> | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#include <stdio.h> | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#include <inttypes.h> | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#include "libavutil/mem.h" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#include "libavutil/audio_fifo.c" | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			#define MAX_CHANNELS    32 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -50,15 +51,6 @@ static void ERROR(const char *str) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        exit(1); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static void* allocate_memory(size_t size) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    void *ptr = malloc(size); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (ptr == NULL){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ERROR("failed to allocate memory!"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return ptr; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			static void print_audio_bytes(const TestStruct *test_sample, void **data_planes, int nb_samples) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int p, b, f; | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -85,11 +77,15 @@ static int read_samples_from_audio_fifo(AVAudioFifo* afifo, void ***output, int | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int samples        = FFMIN(nb_samples, afifo->nb_samples); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    int tot_elements   = !av_sample_fmt_is_planar(afifo->sample_fmt) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                         ? samples : afifo->channels * samples; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    void **data_planes = allocate_memory(sizeof(void*) * afifo->nb_buffers); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    void **data_planes = av_malloc_array(afifo->nb_buffers, sizeof(void*)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!data_planes) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ERROR("failed to allocate memory!"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    *output            = data_planes; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (i = 0; i < afifo->nb_buffers; ++i){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        data_planes[i] = allocate_memory(afifo->sample_size * tot_elements); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        data_planes[i] = av_malloc_array(tot_elements, afifo->sample_size); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (!data_planes[i]) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ERROR("failed to allocate memory!"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return av_audio_fifo_read(afifo, *output, nb_samples); | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -178,9 +174,9 @@ static void test_function(const TestStruct test_sample) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* deallocate */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (i = 0; i < afifo->nb_buffers; ++i){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        free(output_data[i]); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        av_freep(&output_data[i]); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    free(output_data); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_freep(&output_data); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    av_audio_fifo_free(afifo); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |