资源简介
基于三星arm平台 mfc5.1 v4l2 mfc视频解码 参考代码
代码片段和文件信息
/*
* V4L2 Codec decoding example application
* Kamil Debski
*
* Argument parser
*
* Copyright 2012 Samsung Electronics Co. Ltd.
*
* Licensed under the Apache License Version 2.0 (the “License“);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing software
* distributed under the License is distributed on an “AS IS“ BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#include
#include
#include
#include
#include “common.h“
#include “parser.h“
void print_usage(char *name)
{
// “d:f:i:m:c:V“
printf(“Usage:\n“);
printf(“\t./%s\n“ name);
printf(“\t-c - The codec of the encoded stream\n“);
printf(“\t\t Available codecs: mpeg4 h264\n“);
printf(“\t-d - frame buffer device (e.g. /dev/fb0)\n“);
printf(“\t-f - FIMC device (e.g. /dev/video4)\n“);
printf(“\t-i - Input file name\n“);
printf(“\t-m - MFC device (e.g. /dev/video8)\n“);
printf(“\t-V - synchronise to vsync\n“);
//printf(“\t- - \n“);
printf(“\tp2\n“);
printf(“\n“);
}
void init_to_defaults(struct instance *i)
{
memset(i 0 sizeof(*i));
}
int get_codec(char *str)
{
if (strncasecmp(“mpeg4“ str 5) == 0) {
return V4L2_PIX_FMT_MPEG4;
} else if (strncasecmp(“h264“ str 5) == 0) {
return V4L2_PIX_FMT_H264;
} else if (strncasecmp(“h263“ str 5) == 0) {
return V4L2_PIX_FMT_H263;
} else if (strncasecmp(“xvid“ str 5) == 0) {
return V4L2_PIX_FMT_XVID;
} else if (strncasecmp(“mpeg2“ str 5) == 0) {
return V4L2_PIX_FMT_MPEG2;
} else if (strncasecmp(“mpeg1“ str 5) == 0) {
return V4L2_PIX_FMT_MPEG1;
}
return 0;
}
int parse_args(struct instance *i int argc char **argv)
{
int c;
init_to_defaults(i);
while ((c = getopt(argc argv “c:d:f:i:m:V“)) != -1) {
switch (c) {
case ‘c‘:
i->parser.codec = get_codec(optarg);
break;
case ‘d‘:
i->fb.name = optarg;
break;
case ‘f‘:
i->fimc.name = optarg;
break;
case ‘i‘:
i->in.name = optarg;
break;
case ‘m‘:
i->mfc.name = optarg;
break;
case ‘V‘:
i->fb.double_buf = 1;
break;
default:
err(“Bad argument“);
return -1;
}
}
if (!i->in.name || !i->fb.name || !i->fimc.name || !i->mfc.name) {
err(“The following arguments are required: -d -f -i -m -c“);
return -1;
}
if (!i->parser.codec) {
err(“Unknown or not set codec (-c)“);
return -1;
}
switch (i->parser.codec) {
case V4L2_PIX_FMT_XVID:
case V4L2_PIX_FMT_H263:
case V4L2_PIX_FMT_MPEG4:
i->parser.func = parse_mpeg4_stream;
break;
case V4L2_PIX_FMT_H264:
i->parser.func = parse_h264_stream;
break;
case V4L2_PIX_FMT_MPEG1:
case V4L2_PIX_FMT_MPEG2:
相关资源
- 基于mfc的多线程文件传输
- MFC数字钟(基于VC6.0)
- VC++MFC小游戏实例教程(实例)+MFC类库
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- 人脸识别(opencv_facedetect_v4l2)
- mfc 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- c++MFC车牌自动识别定位,只能定位和
- mfc+sql 酒店客房管理系统
- 基于图割的图像分割OpenCV+MFC实现
- MFC绘制Bezier曲线B样条曲线曲线拟合
评论
共有 条评论