mirror of
https://github.com/team-infusion-developers/android_hardware_samsung.git
synced 2024-11-06 21:55:41 +00:00
mfcdec: Compensate race condition in video thumbnail generation
Calling the decoder immediately after encoding a video often trips on the ongoing mfc buffer flushes from the encoder that has just shut down, and fails due to the unavailability of any buffer of sufficient size. If MFC_DEC_INIT fails, give it 100msec and try again. This resolves the blank thumbs when switching to the gallery in the same session that a recording was made. Change-Id: I13b1be8757b314e1c903a0570f9b053550164616
This commit is contained in:
parent
674a4f10ca
commit
e2f7ac211d
1 changed files with 7 additions and 0 deletions
|
@ -243,6 +243,7 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecInit (void *openHandle, SSBSIP_MFC_CODEC_TYPE
|
|||
int packedPB = 0;
|
||||
struct mfc_common_args DecArg;
|
||||
_MFCLIB *pCTX;
|
||||
int retries = 3;
|
||||
|
||||
if (openHandle == NULL) {
|
||||
ALOGE("SsbSipMfcDecInit] openHandle is NULL");
|
||||
|
@ -298,8 +299,14 @@ SSBSIP_MFC_ERROR_CODE SsbSipMfcDecInit (void *openHandle, SSBSIP_MFC_CODEC_TYPE
|
|||
/* sequence start args */
|
||||
/* no needs */
|
||||
|
||||
retry:
|
||||
r = ioctl(pCTX->hMFC, IOCTL_MFC_DEC_INIT, &DecArg);
|
||||
if (DecArg.ret_code != MFC_OK) {
|
||||
if (retries) {
|
||||
retries--;
|
||||
usleep(100000);
|
||||
goto retry;
|
||||
}
|
||||
ALOGE("SsbSipMfcDecInit] IOCTL_MFC_DEC_INIT failed");
|
||||
return MFC_RET_DEC_INIT_FAIL;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue