Exemple #1
0
int decode_video(void *arg)
{
    VideoState *video = (VideoState *)arg;
    AVFrame *pFrame;
    int frameFinished;
    AVPacket packet;
    AVPacket *pkt = &packet;
	

    pFrame = avcodec_alloc_frame();
    while(true) {
	if(get_from_queue(&video->videoq, pkt) < 0) {
	    break;
	}
	avcodec_decode_video2(video->pCodecCtx, pFrame, &frameFinished, &packet);
	//did we get a video frame?
	if(frameFinished) {
	    if(video_frame_queue(video, pFrame) < 0)
		break;
	}
	av_free_packet(pkt);
    }
    av_free(pFrame);
    return 0;
}
Exemple #2
0
void * startVideoEncoding() {
    int bufferIndex = 0;
    //int elapsedTime = 0;
    //int frames = 0;
    ftime(&startTime);

    while( stopRecording == 0) {
        bufferIndex = video_frame_copy();
        video_frame_display( bufferIndex );
        video_frame_compress( bufferIndex );
        if(streaming == 1)
            video_frame_queue();
        /*frames++;
        ftime(&currentTime);
        elapsedTime =  ((currentTime.time-startTime.time) * 1000 ) + ((currentTime.millitm-startTime.millitm) );
        framesps = (float)elapsedTime / 1000;*/
    }
    //printf("frames: %d\n", frames);
    //printf("time ms: %d\n", elapsedTime);
    pthread_exit(NULL);
}