亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libds_decoder.cpp

?? linux下實現視頻播放的播放器
?? CPP
字號:
/* *  Copyright (C) 2005-2007  gulikoza * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *//* $Id$ */#include "iptv.h"#define USES_BASECLASS#include "video.h"#include "wxgui/StreamInfo.h"#if (C_HAS_DIRECTSHOW)#include "h264.h"#include "libdshow/DS.h"#include "libdshow/DS_VideoDecoder.h"//#define DEBUG#include "log.h"#define MODULE "libds_decoder"#define IMGFMT_YV12 0x32315659#define IMGFMT_YUY2 0x32595559static GUID CLSID_CoreAVC = {0x9571a4b, 0xf1fe, 0x4c60, {0x97, 0x60, 0xde, 0x6d, 0x31, 0x0c, 0x7c, 0x31}};int libds_decoder::Run(){    // Codec    DS_VideoDecoder * dshowdec;    // Pitcure info    unsigned int w = 0, h = 0;    // Use some sane defaults incase stream does not have this info    double aspect = 16.0/9.0;    double time = 40.0;#if (C_HAVE_WXGUI)    long frameSize;    Uint32 frameStartTicks;#endif    BITMAPINFOHEADER bih;    SampleProcUserData dsinfo;    bih.biSize = sizeof(BITMAPINFOHEADER);    bih.biWidth = 1920;    bih.biHeight = 1088;    bih.biPlanes = 0;    bih.biBitCount = 0;//  bih.biCompression = 0x31637661; // avc1    bih.biCompression = 0x31435641; // AVC1    bih.biSizeImage = 0;    bih.biXPelsPerMeter = 0;    bih.biYPelsPerMeter = 0;    bih.biClrUsed = 0;    bih.biClrImportant = 0;    // Init codec    dshowdec = DS_VideoDecoder_Open(filter, &CLSID_CoreAVC, &bih, 0, 0);    if(!dshowdec) {	ERROR_MSG("Cannot open DirectShow codec!");	return 0;    }    DS_VideoDecoder_SetDestFmt(dshowdec, 12, IMGFMT_YV12, NULL);//  DS_VideoDecoder_SetDestFmt(dshowdec, 16, IMGFMT_YUY2, NULL);    DS_VideoDecoder_StartInternal(dshowdec);    ERROR_MSG("(ThreadID: %u) init complete", SDL_ThreadID());#ifdef DEBUG    // Frame counter, only for reference    int frames = 0;#endif    // Renderer and target surface info    Renderer * renderer;    Frame frame;#if (C_HAVE_WXGUI)    frameSize = 0;    frameStartTicks = SDL_GetTicks();#endif    while(ThreadRun()) {	renderer = (Renderer*)filterinfo;	// Get next packet from the fifo queue	unsigned int offset;	dsinfo.size = fifo->GetPacket(&offset, &dsinfo.frame_pts);	if((dsinfo.size == 0) || (dsinfo.size > buffersize)) {	    LOG_MSG("Error invalid packet size: %d", dsinfo.size);	    SDL_Delay(10);	    continue;	}#if (C_HAVE_WXGUI)	frameSize += dsinfo.size;#endif	LockBuffer();	roffset = offset;	if(!SDL_SemValue(data))	    SDL_SemPost(data);	UnlockBuffer();	// Search for SEQ packets (NAL unit type: 0x7)	h264info info;	if((info.offset = h264findnal_type(buffer+offset, dsinfo.size, 0x07)) > 0) {	    LOG_MSG("Found SEQ packet, offset %d (0x%x)", info.offset, info.offset);	    info.pkt = buffer+offset;	    info.size = dsinfo.size;	    h264parse_seq(&info);	    if((w != info.width) || (h != info.height)) {		w = info.width;		h = info.height;		ERROR_MSG("New picture size: %dx%d, time: %.2f", info.width, info.height, info.frame_time);		// Setup new size		bih.biWidth = w;		bih.biHeight = h;		DS_VideoDecoder_SetDestFmt(dshowdec, 12, IMGFMT_YV12, &bih);		//DS_VideoDecoder_SetDestFmt(dshowdec, 16, IMGFMT_YUY2, &bih);		frame.changed = true;	    }	    if((info.aspect != 0.0) && (aspect != ((w&0xFFFFFFE0) * info.aspect) / h)) {		aspect = ((w&0xFFFFFFE0) * info.aspect) / h;		frame.changed = true;		LOG_MSG("AR changed to %.2f", aspect);	    }	    if(info.frame_time != 0.0) time = info.frame_time;#if (C_HAVE_WXGUI)	    // New frame size	    if((frame.changed) && (gui.wxStreamInfo != NULL)) {		gui.wxStreamInfo->UpdateVideoStream(w, h, -1, aspect);		frameSize = 0;		frameStartTicks = SDL_GetTicks();	    }#endif	}	if((w == 0) || (h == 0))	    continue;	frame.time = time;	frame.aspect = aspect;	// Lock image surface and write the data	if(renderer) {	    frame.pitch = frame.w = ALIGN(w, 16);	    frame.h = ALIGN(h, 16);	    renderer->LockData(&frame);	    if(frame.id < 0) continue;	    dsinfo.out_ptr = frame.data[0];	    if(!dsinfo.out_ptr) {		ERROR_MSG("Error getting image pointer!");		SDL_Delay(10);		continue;	    }	    dsinfo.in_ptr = buffer+offset;	    LOG_MSG("Writing to location 0x%x", dsinfo.out_ptr);	    dsinfo.size = DS_VideoDecoder_DecodeInternal(dshowdec, 1, &dsinfo);	    if(dsinfo.size > 0) {		// We didn't have correct PTS until now		frame.pts = dsinfo.frame_pts;		renderer->UnlockData(frame.id, &frame);		renderer->ReleaseData(frame.id);		LOG_MSG("Got %d bytes, PTS: %u", dsinfo.size, dsinfo.frame_pts);		frame.changed = false;#if (C_HAVE_WXGUI)		Uint32 frameTimeTaken = SDL_GetTicks() - frameStartTicks;		// Update ~twice per second		if(frameTimeTaken > 500) {		    if(gui.wxStreamInfo != NULL)			gui.wxStreamInfo->UpdateVideoActualBitrate((long)((double)frameSize * 8000.0 / (double)frameTimeTaken));		    frameSize = 0;		    frameStartTicks = SDL_GetTicks();		}#endif#ifdef DEBUG		++frames;#endif	    } else {		LOG_MSG("Error or no data returned!");		renderer->UnlockData(frame.id, NULL);	    }	}    }    DS_VideoDecoder_StopInternal(dshowdec);    DS_VideoDecoder_Destroy(dshowdec);    if(renderer)	renderer->FlushBuffers();    ERROR_MSG("(ThreadID: %u) finish complete", SDL_ThreadID());    return 0;}#endif // (C_HAS_DIRECTSHOW)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美疯狂做受xxxx富婆| 婷婷综合另类小说色区| 色久综合一二码| 美女网站色91| 综合激情网...| 精品国产成人在线影院| 91福利精品视频| 国产福利一区在线| 免费看欧美女人艹b| 一区二区三区在线影院| 精品国产123| 欧美精品第1页| 色爱区综合激月婷婷| 国产激情一区二区三区桃花岛亚洲| 亚洲va欧美va天堂v国产综合| 中文欧美字幕免费| 精品精品国产高清a毛片牛牛| 欧美视频中文一区二区三区在线观看| 成人免费看片app下载| 久久国产精品99精品国产 | 国产精品毛片久久久久久久| 91麻豆精品国产91久久久| 91丨porny丨最新| 成人一区二区视频| 国产精品一区二区久激情瑜伽| 青青草91视频| 日本va欧美va精品发布| 亚洲444eee在线观看| 夜夜揉揉日日人人青青一国产精品| 欧美国产欧美亚州国产日韩mv天天看完整| 日韩一区二区电影在线| 欧美精品日韩一本| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲精品视频在线| 日韩理论电影院| 成人欧美一区二区三区在线播放| 欧美激情综合在线| 国产精品网曝门| 亚洲国产精品高清| 中文字幕国产精品一区二区| 久久久777精品电影网影网 | 99国内精品久久| 成人av在线影院| 成人免费视频一区| av在线综合网| 一本色道亚洲精品aⅴ| 一本到高清视频免费精品| 91美女片黄在线观看| 日本韩国一区二区| 欧美偷拍一区二区| 9191久久久久久久久久久| 91精品欧美综合在线观看最新| 777欧美精品| 精品少妇一区二区三区日产乱码| 欧美精品一区男女天堂| 国产亚洲精品aa| 日韩理论电影院| 亚洲大尺度视频在线观看| 日韩激情一二三区| 国内精品不卡在线| 国产99久久久国产精品免费看| 成人激情午夜影院| 91成人免费在线| 制服丝袜亚洲色图| 久久精品人人做| 自拍av一区二区三区| 亚洲午夜电影在线观看| 伦理电影国产精品| 豆国产96在线|亚洲| 色综合亚洲欧洲| 欧美一区二区三区四区五区| 久久综合给合久久狠狠狠97色69| 国产亚洲精品久| 一区二区三区蜜桃网| 麻豆成人久久精品二区三区红| 国产精品亚洲午夜一区二区三区| 91在线小视频| 欧美一区二区视频在线观看| 久久精品欧美一区二区三区麻豆| 亚洲精品乱码久久久久久久久 | caoporn国产精品| 欧美日本在线看| 欧美国产精品一区二区三区| 亚洲国产精品久久人人爱| 精品在线一区二区| 色天天综合色天天久久| 日韩精品综合一本久道在线视频| 中国av一区二区三区| 蜜芽一区二区三区| 91香蕉视频黄| 精品国产一区二区三区四区四| 成人欧美一区二区三区视频网页 | 在线观看视频一区| 久久麻豆一区二区| 性做久久久久久免费观看| 国产sm精品调教视频网站| 欧美男女性生活在线直播观看| 欧美国产视频在线| 蜜臀av一级做a爰片久久| 91丨九色丨黑人外教| 久久夜色精品国产欧美乱极品| 夜夜揉揉日日人人青青一国产精品| 国产乱人伦偷精品视频免下载| 欧美日韩免费一区二区三区| 中文字幕国产一区| 寂寞少妇一区二区三区| 欧美日韩精品专区| 1区2区3区欧美| 国产麻豆视频一区| 日韩一区二区免费高清| 一区二区三区成人| 成人精品免费视频| 国产色产综合色产在线视频| 日本欧洲一区二区| 欧美日韩一卡二卡| 亚洲免费观看高清完整版在线 | 日韩欧美中文字幕精品| 亚洲激情综合网| 9色porny自拍视频一区二区| 久久麻豆一区二区| 国产一区二三区| 欧美成人伊人久久综合网| 亚洲bt欧美bt精品| 欧美精品色一区二区三区| 亚洲卡通动漫在线| 99久久婷婷国产综合精品电影| 国产三级精品三级| 国产成人精品免费网站| 久久久久国产免费免费| 国产美女娇喘av呻吟久久| 精品国免费一区二区三区| 麻豆专区一区二区三区四区五区| 欧美电影在线免费观看| 天天av天天翘天天综合网| 欧美日韩情趣电影| 日韩国产欧美三级| 欧美一区二区三区的| 奇米一区二区三区av| 日韩精品中文字幕一区二区三区| 蜜桃视频在线观看一区二区| 日韩欧美另类在线| 精品无人区卡一卡二卡三乱码免费卡| 欧美精品一区二区三区很污很色的| 狠狠色丁香九九婷婷综合五月| 2014亚洲片线观看视频免费| 国产美女精品一区二区三区| 欧美国产禁国产网站cc| 99精品欧美一区二区三区综合在线| 最近日韩中文字幕| 欧美在线你懂得| 日韩精品一二区| 亚洲精品一区二区三区蜜桃下载| 国产在线国偷精品产拍免费yy| 精品sm捆绑视频| 成人a级免费电影| 亚洲精品免费在线播放| 制服丝袜一区二区三区| 国产精品白丝jk黑袜喷水| 国产精品免费久久| 欧美性受xxxx黑人xyx| 日韩成人精品视频| 久久精品一区蜜桃臀影院| 成人app软件下载大全免费| 亚洲女子a中天字幕| 欧美日韩一区二区三区四区五区| 狂野欧美性猛交blacked| 久久精品欧美一区二区三区麻豆| 91色婷婷久久久久合中文| 天天综合网 天天综合色| 久久影院视频免费| 91成人免费电影| 蜜臀av一区二区在线观看| 中文字幕在线不卡一区 | 欧美嫩在线观看| 国产精品一区三区| 亚洲精品成人在线| 日韩欧美一级在线播放| aaa欧美日韩| 蓝色福利精品导航| 亚洲精品久久7777| 精品人在线二区三区| jiyouzz国产精品久久| 蜜桃av一区二区三区| 国产精品视频麻豆| 欧美一区午夜视频在线观看| 成人午夜精品一区二区三区| 香蕉影视欧美成人| 国产人伦精品一区二区| 欧美日韩在线播| 国产91综合一区在线观看| 婷婷国产v国产偷v亚洲高清| 国产三级欧美三级| 欧美二区三区91| 精品在线亚洲视频| 日韩一区二区三区电影在线观看| 精品一区二区三区久久| 亚洲国产精品av| 亚洲视频资源在线| 亚洲第四色夜色| 91丨porny丨户外露出|