tstools-1.11
合成源码流程
1.合成函数 --merge_with_h264()
2.流程
1)初始化重要参数值见下表
序号
参数
代表意思
1
got_video
标志位,合成TS流中是否有视频流;有为TRUE,否则false
2
got_audio
标志位,合成TS流中是否有音频流;有为TRUE,否则false
3
prog_pids[]
音视频PID,都有取2个,只有视频或音频取1。
4
prog_type[]
音视频流类型,都有取2个;如只要视频H264码流则 prog_type[0] = AVC_VIDEO_STREAM_TYPE;(0x1B)
2.取音频prog_type[]的值
代码:
switch (audio_type)
{
case AUDIO_ADTS:
case AUDIO_ADTS_MPEG2:
case AUDIO_ADTS_MPEG4:
prog_type[1] = ADTS_AUDIO_STREAM_TYPE;
break;
case AUDIO_L2:
prog_type[1] = MPEG2_AUDIO_STREAM_TYPE;
break;
case AUDIO_AC3:
prog_type[1] = ATSC_DOLBY_AUDIO_STREAM_TYPE;
break;
default: // what else can we do?
prog_type[1] = ADTS_AUDIO_STREAM_TYPE;
break;
}
3连续写出八个TS流空包------ write_TS_null_packet(TS_writer_poutput)
代码
write_TS_null_packet(TS_writer_p output)
{
byte TS_packet[TS_PACKET_SIZE];
int err, ii;
TS_packet[0] = 0x47;
TS_packet[1] = 0x1F; // PID is 0x1FFF
TS_packet[2] = 0xFF;
TS_packet[3] = 0x20; // payload only
for (ii=4; ii<TS_PACKET_SIZE; ii++)
TS_packet[ii] = 0xFF;
err = write_TS_packet_parts(output,TS_packet,TS_PACKET_SIZE,NULL,0,NULL,0,0x1FF,FALSE,0);
if (err)
{
fprintf(stderr,"### Error writing null TS packet\n");
return 1;
}
return 0;
}<span style="font-weight: bold;">
</span>
注:空包包头 0x47 0x1F 0xFF 0x20 包数据全为0xff。包长188个字节
4.为多种类型(音频、视频流)写出pat和PMT--- write_TS_program_data2()
具体如何写参考write_pat_and_pmt()、append_to_pidint_list()等函数
5.判断got_video 、got_audio是否为true(即是否任何一个存在),存在在进行循环合成
while (got_video || got_audio)
{
......
}
6.具体合成
具体合成分两步:1. write_TS_program_data2()----------------写出PMT和PAT
2.根据H264码流的帧类型(I帧和非I帧),添加PTS/DTS和pcr
代码如下:
<strong> </strong> if (is_I_or_IDR_frame(access_unit)) //判断是否是I帧,I帧则pts/dts ;否则打pcr
err = write_access_unit_as_TS_with_pts_dts(access_unit,video_context, output,DEFAULT_VIDEO_PID,
TRUE,video_pts+45000, TRUE,video_pts);
libmgi-4.0.0.new.tar.gz
本MGI库完美支持miniGui4.0.7,
1.支持64位编译器,32位请下载本人上传的另外一个版本;
2.更改了现代手机样式的皮肤,支持自定义键盘大小;
3、支持miniGui 4.0.7版本
交叉编译方式: libmgi-4.0.0(专门为minigui 4.0修改的版本)
./configure --prefix=$PWD/../_install --host=aarch64-linux PKG_CONFIG_PATH=$PWD/../_install/lib/pkgconfig/ CPPFLAGS=-I$PWD/../_install/include LDFLAGS=-L$PWD/../_install/lib
make
make install
libmgi-4.0.0.tar.gz
本MGI库完美支持miniGui4.0,
1.不支持64位编译器,64位请下载本人上传的另外一个版本;
2.增加硬件键盘中文输入支持;
3.增加键盘鼠标热插拔的支持;
交叉编译方式:
libmgi-4.0.0(专门为minigui 4.0修改的版本)
./configure --prefix=$PWD/../_install --host=arm-hisiv600-linux PKG_CONFIG_PATH=$PWD/../_install/lib/pkgconfig/ CPPFLAGS=-I$PWD/../_install/include LDFLAGS=-L$PWD/../_install/lib
make
make install
sublime Text3 汉化包.zip
sublime Text3 中文完全汉化包
替换Sublime Text 3\Packages 下对应文件即可
minigui 静态按键类
minigui 静态按键类
本类按键风格和静态框相同,静态框所有的风格和消息都支持,按键是在静态框基础上增加了MSG_MOUSEMOVEIN(鼠标移入和移出窗口)和MSG_LBUTTONUP(鼠标在窗口松手)两个消息,通过发送NotifyParent消息给控件实现自定义控件消息,类似于静态框的超类。同样可以修改源码调用源码API将其他消息交给原控件完成,实现控件的超类。