- 博客(63)
- 资源 (3)
- 收藏
- 关注

原创 Windows多媒体开发框架介绍
Windows 多媒体开发框架介绍欢迎来到 Windows 的多媒体开发世界2D 图形 API1. [GDI](https://docs.microsoft.com/en-us/windows/desktop/gdi/windows-gdi)2. [GDI+](https://docs.microsoft.com/en-us/windows/desktop/gdiplus/-gdiplus-gdi...
2019-01-27 15:55:21
5318
7
原创 Intel MSDK 硬编码
Intel MSDK 硬编码Intel MSDK samplesIntel MSDK encoding sampleIntel MSDK encoding 代码CEncodingPipeline::Init 函数ffmpeg_writer::Init 函数CEncodingPipeline::Run 函数CEncodingPipeline::EncodeFrame 函数CEncodingPipel...
2019-02-15 11:26:59
3815
6
原创 Intel MSDK 硬解码
Intel MSDK 硬解码Intel MSDK samplesIntel MSDK decoding sampleIntel MSDK decoding 代码ffmpeg_reader::Init 函数SDL_video_helper::init 函数CDecodingPipeline::Init 函数CDecodingPipeline::InitMfxParams 函数decoding_thr...
2019-02-14 20:00:54
2669
7
原创 视频特效滤镜 via Media Foundation Transform (MFT)
视频特效插件 via Media Foundation视频特效定义Media Foundation TransformIMFTransform::GetInputStreamInfo 函数IMFTransform::GetOutputStreamInfo 函数IMFTransform::GetInputAvailableType 函数CGrayscale::OnGetPartialType 函数I...
2019-02-14 16:50:40
1326
1
原创 视频特效滤镜 via DirectShow Filter
视频特效插件 via DirectShow视频特效定义DirectShow FilterCEZrgb24 FilterCTransformFilter::CheckInputType 函数CTransformFilter::CheckTransform 函数CTransformFilter::DecideBufferSize 函数CTransformFilter::Transform 函数CEZr...
2019-02-14 14:56:54
787
原创 视频特效滤镜 via FFmpeg Filter
视频特效插件 via FFmpeg视频特效定义FFmpeg filterav_filter_base 类av_filter_base::video_filter_init_begin 函数Video_filter 子类av_filter_base::filter_init_end 函数av_filter_base::do_filter 函数视频特效定义视频特效(Video effects 或 ...
2019-02-14 12:07:00
1275
原创 视频转码 via Media Foundation
视频转码 via Media FoundationMedia Foundation 简介Media Foundation 转码视频Transcoding 流程图Transcoding 代码setTranscodeProfile 函数CTranscodeTopoBuilder_setAudioAttributes 函数CTranscodeTopoBuilder::_setVideoAttribute...
2019-02-14 11:41:36
1186
原创 视频转码 via FFmpeg
视频转码 via FFmpegFFmpeg 简介FFmpeg 命令行转码FFmpeg API 转码Transcoding 流程图Transcoding 代码open_input_file 函数open_output_video_file 函数init_cvt_frame_and_sws 函数转码(transcoding)其实就是把音频从一种编码转换成另一种编码的过程,如 mpg2 → h.264...
2019-02-13 20:41:47
850
1
原创 视频播放 via DirectShow
视频播放 via DirectShowDirectShow 简介DirectShow 播放视频播放流程播放代码DShowPlayer::OpenFile 函数DShowPlayer::InitializeGraph 函数DShowPlayer::RenderStreams 函数DShowPlayer::CreateVideoRenderer 函数EVR::AddToGraph 函数EVR::Ini...
2019-02-13 17:09:57
564
原创 视频播放 via FFmpeg
视频播放 via FFmpegFFmpeg 简介FFmpeg 命令行播放视频FFmpeg + SDL 播放视频播放流程播放代码open_input_file 函数init_cvt_frame_and_sws 函数Video_filter::init 函数SDL_video_helper::init 函数SDL_video_helper::video_refresh_thread 函数SDL_vid...
2019-02-13 15:56:30
635
原创 视频采集 via Media Foundation
视频采集 via Media FoundationMedia Foundation 简介Media Foundation 采集视频采集流程图MF 采集视频代码MMDeviceHelper::enumVidCapDevices 函数CMFCapture::startCapture 函数CMFCapture::_configVideoCapture 函数createSrcReader 函数config...
2019-02-13 14:07:08
2201
1
原创 视频采集 via DirectShow
视频采集 via DirectShowDirectShow 简介DirectShow 采集视频采集流程图采集代码CVideoCap 类CVideoCap::_initCapDevice 函数CVideoCap::_buildCaptureGraph 函数CVideoCap::startPreview 函数CVideoCap::startRecord 函数CRecordSwitch 类CTransI...
2019-02-13 13:27:40
649
原创 视频采集 via FFmpeg
视频采集 via FFmpegFFmpeg 简介FFmpeg 命令行采集视频FFmpeg API 采集视频这里所说的采集是指通过摄像头采集图像数据然后经过编码保存为磁盘上的一个文件。Windows 上有如下几种常见的实现方式:FFmpegDirectShowMedia FoundationFFmpeg 简介FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开...
2019-02-13 11:41:27
931
原创 视频编码
视频编码视频编码基本原理变换编码熵编码运动估计和运动补偿混合编码分辨率、帧率和码率主流视频编码器常见视频格式H.264H.264 主要特点视频编码基本原理视频信号的冗余信息以记录数字视频的 YUV 分量格式为例,YUV 分别代表亮度与两个色差信号。例如对于现有的 PAL 制电视系统,其亮度信号采样频率为 13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为 6.75MHz 或 3....
2019-02-12 19:15:28
751
原创 Windows 2D 绘图 (GDI, GDI+, Direct2D)
Windows 2D 绘图GDIGDI 函数GDI+GDI 和 GDI+ 的区别GDI+ 新特性Direct2D视觉效果demoGDIGDI 是 Graphics Device Interface 的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有 Windows 程序的图形输出。在 Windows 操作系统下,绝大多数具备图形界面的应用程序都离不开 GDI...
2019-02-12 18:05:28
6101
原创 RGB 和 YUV 格式
RGB 和 YUV 格式RGBWindows 中的 RGB 格式DIB 位图(Bitmap)文件结构RGB24 & RGB32 格式YUVWindows 中的 YUV 格式YUV 采样表面(Surface)定义YUY2 格式NV12 格式ColorSpace sampleRGB计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用 R(Red)、G(Green)、B(Blue)相加混...
2019-02-12 16:50:28
601
原创 音频频谱 via FFT
音频频谱分析频谱和均衡器声音信号的时域和频域FFTAudioSpectrum sample工作流程源代码_readAudioData 函数FFTUtil::calc 函数按指定频率计算对应的幅值Sample 程序展示频谱和均衡器频谱和均衡器,几乎是媒体播放程序的必备物件,没有这两个功能的媒体播放程序会被认为不够专业。声音信号的时域和频域时域是描述数学函数或物理信号对时间的关系。例如一...
2019-02-12 15:22:40
6501
2
原创 声卡数据采集
声卡数据采集Loopback 录制模式Loopback 录制代码LoopackAudCap::init 函数MMDeviceHelper::getDefaultSpeaker 函数LoopackAudCap::_loopbackCap 函数LoopackAudCap::_capture 函数LoopackAudCap::start & stop 函数CWavFileHelper::clos...
2019-02-12 14:25:42
2724
2
原创 音频特效滤镜 via Media Foundation Transform (MFT)
音频特效插件 via Media Foundation音频特效定义Media Foundation TransformIMFTransform::GetInputStreamInfo 函数IMFTransform::GetOutputStreamInfo 函数IMFTransform::GetInputAvailableType 函数CDelayMFT::GetProposedType 函数IMF...
2019-02-12 11:46:01
860
1
原创 音频特效滤镜 via DirectShow Filter
音频特效插件 via DirectShow音频特效定义DirectShow FilterCTransformFilter::CheckInputType 函数CTransformFilter::SetMediaType 函数CTransInPlaceFilter::Transform 函数ISpecifyPropertyPages::GetPages 函数CGargleProperties 类音...
2019-02-02 15:38:39
487
原创 音频特效滤镜 via FFmpeg Filter
音频特效插件 via FFmpeg音频特效定义FFmpeg filterFFmpeg filter graphFilter graph 的语法av_filter_base 类av_filter_base::init 函数av_filter_base::audio_filter_init_begin 函数Audio_filter 子类av_filter_base::filter_init_end 函...
2019-02-02 14:57:34
1596
原创 音频转码 via Media Foundation
音频转码 via Media FoundationMedia Foundation 简介Media Foundation 转码音频Transcoding 流程图Transcoding 代码setTranscodeProfile 函数CTranscodeTopoBuilder::_setAudioAttributes 函数CTranscodeTopoBuilder::_setContainerAtt...
2019-02-01 17:34:22
1774
原创 音频转码 via DirectShow
音频转码 via DirectShowDirectShow 简介DirectShow 转码Transcoding 流程图Transcoding 代码_initGraph 函数_addEncoder 函数_addFileWriter 函数_renderStream 函数handleDShowEvent 函数DShow transcoding graph转码(transcoding)其实就是把音频从...
2019-02-01 09:30:00
707
原创 音频转码 via FFmpeg
音频转码 via FFmpegFFmpeg 简介FFmpeg 命令行转码FFmpeg API 转码Transcoding 流程图Transcoding 代码open_input_file 函数open_output_audio_file 函数open_output_file 函数init_audio_encoder 函数audio_transcode 函数decode_a_frame 函数read...
2019-01-31 19:26:00
1352
原创 音视频播放 via Media Foundation I
音频播放 via Media Foundation IMedia Foundation 简介Media Foundation 播放音频播放流程图播放代码CPlayer::OpenURL 函数CPlayer::CreateSession 函数CTopoBuilder::CreateMediaSource 函数CTopoBuilder::CreateTopology 函数CTopoBuilder::A...
2019-01-31 17:54:21
1110
原创 音视频播放 via Media Foundation II
音频播放 via Media Foundation IMedia Foundation 简介Media Foundation 播放音频播放流程图播放代码MFPlayer 类MFPlayer::CreateInstance 静态函数MFPlayer::Initialize 函数CAudioSessionVolume 类CAudioSessionVolume::Initialize 函数MFPlaye...
2019-01-30 19:30:23
993
原创 音频播放 via DirectShow
音频播放 via DirectShowDirectShow 简介DirectShow 播放音频播放流程播放代码DSAudioPlayer::openFile 函数DSAudioPlayer::_initGraph 函数DSAudioPlayer::_renderStreams 函数DSAudioPlayer::_updateVolume 函数DSAudioPlayer::play 函数handl...
2019-01-30 15:55:57
569
原创 音频播放 via FFmpeg
音频播放 via FFmpegFFmpeg 简介FFmpeg 命令行播放音频FFmpeg + SDL 播放音频播放流程播放代码这里所说的播放是指通过读取声音文件数据然后经过解码输出到扬声器进行播放的过程。Windows 上有如下几种常见的实现方式:Waveform APIFFmpegDirectShowMedia FoundationFFmpeg 简介FFmpeg 是一套可以用...
2019-01-30 12:53:20
893
原创 音频播放 via Waveform API
音频播放 via Waveform APIWaveform API 播放音频播放流程图播放代码CWavOutHelper::_openWavFile 函数CWaveFileHelper::open 函数CWaveFileHelper::getAudioData 函数CWavOutHelper::_prepareHeaderAndPlay 函数CWavOutHelper::_fillAudioBuf...
2019-01-29 17:52:46
477
原创 音频采集 via Media Foundation
音频采集 via Media FoundationMedia Foundation 简介Media Foundation 采集音频采集流程图采集代码概览MMDeviceHelper::enumAudCapDevices 函数CMFCapture::startCapture 函数CMFCapture::_configAudioCapture 函数createSrcReader 函数configSrc...
2019-01-29 15:18:04
954
原创 音频采集 via DirectShow
音频采集 via DirectShowDirectShow 简介DirectShow 采集音频采集流程图采集代码概览enumAudioInputFilters 函数addFilterByCLSID 函数connectFilters 函数getUnconnectedPin 函数GraphEdit这里所说的音频采集是指通过麦克风采集声音数据然后经过编码保存为磁盘上的一个文件。Windows 上有如...
2019-01-29 14:35:32
487
原创 音频采集 via FFmpeg
音频采集 via FFmpegFFmpeg 命令行采集音频FFmpeg API 采集音频音频重采样FFmpeg 采集音频代码概览open_cap_device 函数enum_dshow_acap_devices 函数open_output_audio_file 函数open_output_file 函数init_audio_encoder 函数audio_transcode 函数decode_a_...
2019-01-29 13:56:11
1446
原创 音频采集 via Waveform API
音频采集 via Waveform APIWaveform API 采集音频采集音频的流程代码调用概览CWaveInHelper::enumDevices 函数CWaveInHelper::openDevice 函数CWaveInHelper::startRecording 函数CWaveInHelper::_waveInProc 回调函数CWaveInHelper::stopRecording ...
2019-01-29 11:54:26
681
3
原创 PCM和WAV数据结构
PCM 和 WAV 数据结构采样率数字音频常用的采样率位深度PCM 音频数据PCM 音频数据的存储PCM 音频数据的参数PCM 音频数据的处理降低某个声道的音量[^1]PCM → WAVWAV 格式定义WAV 文件头解析PCM → WAV 代码[^1]采样率在我的另一篇博文 音频编码 中已经介绍了采样和量化的概念,这里介绍一下采样率。采样率表示音频信号每秒的数字快照数。该速率决定了音频文件的...
2019-01-29 10:40:51
3853
原创 音频编码
音频编码音频编码基本原理[^1]音频信号的冗余信息静音阈值曲线频谱掩蔽效应时域掩蔽效应压缩编码方法音频采样音频量化语音 / 音频编码算法常见音频压缩格式对比音频编码基本原理1音频信号的冗余信息数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽。例如,一套双声道数字音频若取样频率为 44.1KHz,每样值按 16bit 量化,则其码率为: 2 x 44.1 kHz x 16 bi...
2019-01-28 19:19:40
1972
4
原创 COM对象
COM 对象QueryInterface 实现关于 COM 接口的介绍请参考我的另一篇博文 COM 接口。本文主要关注 COM 的实现。QueryInterface 实现QueryInterface 接口查询函数一般实现如下:HRESULT CCalculator::QueryInterface(const IID& iid, void **ppv){ if ( iid...
2019-01-28 18:38:43
6550
原创 COM接口
COM 接口什么是 COM?接口的结构与描述使用 C++/C/Delphi 描述接口IDL接口的标识COM 数据类型MIDL 编译器IUnknown 接口接口继承接口查询规则什么是 COM?COM 全称为 Component Object Model,是微软为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在 COM 构架下,人们可以开发出各种各样的功能专一的组件,然后...
2019-01-27 17:57:59
10196
4
原创 Story in PeopleWare: 24
会议一开始是几分钟的善意玩笑,老板安布罗斯对每一个与会者开轻松的玩笑。每一位听者都上当了而且同样给予轻松的反击,大家都很愉快。在安布罗斯主持会议之后大家都心境迅速改变了。问题被简洁而有效地摆到桌面上来讨论。每一个问题只和与会者中的一个讨论。安布罗斯与那个谈话人进行简短的对话,传递有关公司情况信息,以便安布罗斯能够确切地了解那个星期所取得的进展。在会议期间,时间是平均分配给每位与会者的,每位...
2019-01-27 16:17:34
289
原创 Story in PeopleWare: 25
一个富有进取心的经理进入了公司,这个催化剂般的天才说服力公司在公司附近建立一所自己的学校。这所学校有一个日托和学前中心,还有为上幼儿园的孩子至五年级的学生准备的班级。这所学校是为雇员的小孩设立的。每天下午在老师领着全体学生穿过整个公司的时候,他们大肆宣扬地向每一个人问好,组成了一支喧闹、有趣、耀武扬威的傻乎乎的游行队伍。一英里远你就能听见他们来了。所有的工作都因为这个游行而暂停了。有许多人...
2019-01-27 16:17:20
1674
原创 Story in PeopleWare: 23
<br /> 我的一个客户从事软件开发工作有很长的历史,从现在算起有30多年了。经过这段时期,他们留用了一千或一千以上的开发人员进行工作。因此他们能毫不夸张地说他们有30000人年的软件经验。这给了我很深的印象:可以想象一下,如此多的学习经验都被带到一个新项目中是什么情形。因此我问他们当中的一个团队。当派一位新经理去管理一个新的软件项目时,你对他(或她)轻声耳语的至理名言是什么?他们想了一会儿,然后几乎齐声地回答:“祝你好运。”
2011-02-13 21:05:00
323
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人