C_RESULT video_decode_picture( video_controller_t* controller, vp_api_picture_t* picture, video_stream_t* ex_stream, bool_t* got_image ) { vp_api_picture_t blockline = { 0 }; controller->mode = VIDEO_DECODE; // mandatory because of video_cache_stream blockline = *picture; blockline.height = MB_HEIGHT_Y; blockline.complete = 1; blockline.vision_complete = 0; while( VP_SUCCEEDED(video_cache_stream( controller, ex_stream )) ) { video_codec_type_select(controller,ex_stream); // to be verified video_decode_blockline( controller, &blockline, got_image ); } return C_OK; }
C_RESULT video_decode_blockline( video_controller_t* controller, vp_api_picture_t* blockline, bool_t* got_image ) { video_codec_type_select(controller,&controller->in_stream); // TODO: choix dynamique de codec, avant de décoder on devrait vérifier la nature de l'image (codec type) return controller->video_codec->decode_blockline( controller, blockline, got_image ); }
C_RESULT video_decode_blockline( video_controller_t* controller, vp_api_picture_t* blockline, bool_t* got_image ) { video_codec_type_select(controller,&controller->in_stream); return controller->video_codec->decode_blockline( controller, blockline, got_image ); }