同步相关 --及音量

#include <windows.h>
#include <mutex>
#include "SDL.h"

#define REFRESH_EVENT  (SDL_USEREVENT + 1)

static SDL_Thread* refresh_thread;
static SDL_Event event;

static int thread_exit = 0;
static int refresh_video(void* opaque) {
    while (thread_exit == 0) {
        SDL_Event event;
        event.type = REFRESH_EVENT;
        SDL_PushEvent(&event);
        SDL_Delay(4000);
    }
    return 0;
}



int main(int argc, char** argv)
{

    refresh_thread = SDL_CreateThread(refresh_video, NULL, NULL);

    while (1) {
        SDL_WaitEvent(&event);
        if (event.type == REFRESH_EVENT) {
            printf("REFRESH_EVENT \n");
        }else if (event.type == SDL_QUIT) {
            printf("SDL_QUIT \n");
            break;
        }
        printf("while\n");
    }
    return 0;
}

 

    SDL_Event event;
    double remaining_time = 0.0;
    SDL_PumpEvents();
    //while (!SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT)) 
    SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT);
    {

        sdlRender->Display((uint8_t**)frame->data, frame->linesize);

#define DelayTime 5
        if (lastDts >= 0)
        {
            auto diff = frame->pkt_pts - lastDts;
            int duration = diff * 1000 / (video_stream->time_base.den
                / video_stream->time_base.num);
            if (duration > DelayTime && duration < 1000)
            {
                Sleep(duration - DelayTime);
                printf("Sleep %d ----------\n", duration - DelayTime);
            }
        }
        lastDts = frame->pkt_pts;


        SDL_PumpEvents();
    }

 

音量

 

 

https://blog.csdn.net/weixinhum/article/details/34864625

posted @ 2021-12-31 16:51  cnchengv  阅读(29)  评论(0编辑  收藏  举报