C_RESULT video_codec_close( video_controller_t* controller ) { video_utils_close( controller ); if( controller->blockline_cache != NULL ) vp_os_aligned_free( controller->blockline_cache ); if( controller->in_stream.bytes != NULL ) video_packetizer_close( controller ); switch( controller->codec_type ) { case UVLC_CODEC: uvlc_codec_free( controller ); break; case P263_CODEC: p263_codec_free( controller ); break; default: break; } // Cleanup caches video_controller_cleanup( controller ); return C_OK; }
void* vp_os_aligned_realloc(void* ptr, size_t size, size_t align_size) { void* ptr_ret; void* aligned_ptr; if( size == 0 ) { ptr_ret = NULL; if( ptr != NULL ) vp_os_aligned_free(ptr); } else { if( ptr != NULL ) { int* ptr2 = (int*)ptr - 1; size_t old_size; aligned_ptr = ptr; old_size = *ptr2--; ptr_ret = vp_os_aligned_malloc(size, align_size); // Compute smallest size if( size > old_size ) { size = old_size; } // Copy old data vp_os_memcpy( ptr_ret, aligned_ptr, size ); vp_os_free( ((char*)ptr - *ptr2) ); } else { ptr_ret = vp_os_aligned_malloc(size, align_size); } } return ptr_ret; }
static C_RESULT video_codec_close_private( video_controller_t* controller, bool_t keep_stream ) { video_utils_close( controller ); if( controller->blockline_cache != NULL ) { vp_os_aligned_free( controller->blockline_cache ); controller->blockline_cache = NULL; } if (controller->cache_mbs != NULL) { vp_os_free( controller->cache_mbs ); controller->cache_mbs = NULL; } // TODO: choix dynamique de codec, le packetizer_close n'est pas appellé lors d'un changement de codec dynamique if( keep_stream == FALSE && controller->in_stream.bytes != NULL ) video_packetizer_close( controller ); switch( controller->codec_type ) { case UVLC_CODEC: uvlc_codec_free( controller ); break; case P263_CODEC: p263_codec_free( controller ); break; case P264_CODEC: p264_codec_free( controller ); break; default: break; } // Cleanup caches video_controller_cleanup( controller ); return C_OK; }
static C_RESULT video_codec_close_private( video_controller_t* controller, bool_t keep_stream ) { video_utils_close( controller ); if( controller->blockline_cache != NULL ) { vp_os_aligned_free( controller->blockline_cache ); controller->blockline_cache = NULL; } if (controller->cache_mbs != NULL) { vp_os_free( controller->cache_mbs ); controller->cache_mbs = NULL; } if( keep_stream == FALSE && controller->in_stream.bytes != NULL ) video_packetizer_close( controller ); switch( controller->codec_type ) { case UVLC_CODEC: uvlc_codec_free( controller ); break; case P263_CODEC: p263_codec_free( controller ); break; /*case P264_CODEC: p264_codec_free( controller ); break;*/ default: break; } // Cleanup caches video_controller_cleanup( controller ); return C_OK; }