示例#1
0
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;
    }
}
示例#2
0
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;
}