void playergetparam(void *hplayer, DWORD id, void *param) { if (!hplayer || !param) return; PLAYER *player = (PLAYER*)hplayer; switch (id) { case PARAM_VIDEO_WIDTH: if (!player->pVideoCodecContext) *(int*)param = 0; else *(int*)param = player->pVideoCodecContext->width; break; case PARAM_VIDEO_HEIGHT: if (!player->pVideoCodecContext) *(int*)param = 0; else *(int*)param = player->pVideoCodecContext->height; break; case PARAM_VIDEO_DURATION: if (!player->pAVFormatContext) *(DWORD*)param = 0; else *(DWORD*)param = (DWORD)(player->pAVFormatContext->duration / AV_TIME_BASE); break; case PARAM_VIDEO_POSITION: rendertime(player->hCoreRender, (DWORD*)param); break; case PARAM_RENDER_MODE: *(int*)param = player->nRenderMode; break; } }
static void showBar(int level, int64_t clk, char *stmt) { int64_t i =0, nl; size_t stamplen=0; nl = level/2-prevlevel/2; if( level != 100 && (nl == 0 || level/2 <= prevlevel/2)) return; static_assert(MSGLEN < BUFSIZ, "MSGLEN too small"); if(prevlevel == 0) printf("["); else for( i= 50 - prevlevel/2 +txtlength; i>0; i--) printf("\b \b"); for( i=0 ; i< nl ; i++) putchar('#'); for( ; i < 50-prevlevel/2; i++) putchar('.'); putchar(level ==100?']':'>'); printf(" %3d%%",level); if( level == 100 || duration == 0){ rendertime(clk,1); printf(" %s ",stamp); stamplen= strlen(stamp)+3; } else if( duration && duration- clk > 0){ rendertime(duration - clk,0); printf(" %s ETC ", stamp); stamplen= strlen(stamp)+3; } else if( duration && duration- clk < 0){ rendertime(clk - duration ,0); printf(" +%s ETC ",stamp); stamplen= strlen(stamp)+3; } if( stmt) printf("%s",stmt); fflush(stdout); txtlength = 11 + stamplen + strlen(stmt?stmt:""); prevlevel = level; }