lua 解析ffmpeg结构体时候用的正则表达式

本文介绍了一个JPEG2000视频解码器的配置细节,包括解码器的基本属性设置、初始化和关闭函数、解码帧的方法等。此外还提到了支持的像素格式,以及一些用于字符串匹配的正则表达式。
local text="AVCodec ff_jpeg2000_decoder = {"
.."    .name           = \"j2k\",\n"
.."    .type           = AVMEDIA_TYPE_VIDEO,\n"
.."    .id             = CODEC_ID_JPEG2000,\n"
.."    .priv_data_size = sizeof(J2kDecoderContext),\n"
.."    .init           = j2kdec_init,\n"
.."    .close          = decode_end,\n"
.."    .decode         = decode_frame,\n"
.."    .capabilities = CODEC_CAP_EXPERIMENTAL,\n"
.."    .long_name = NULL_IF_CONFIG_SMALL(\"JPEG 2000\"),\n"
.."    .pix_fmts =\n"
.."        (const enum PixelFormat[]) {PIX_FMT_GRAY8, PIX_FMT_RGB24, PIX_FMT_NONE}\n"
.."};\n";
local text2=""
.."    .name           = \"j2k\",\n"
.."    .type           = AVMEDIA_TYPE_VIDEO,\n"
.."    .id             = CODEC_ID_JPEG2000,\n"
.."    .priv_data_size = sizeof(J2kDecoderContext),\n"
.."    .init           = j2kdec_init,\n"
.."    .close          = decode_end,\n"
.."    .decode         = decode_frame,\n"
.."    .capabilities = CODEC_CAP_EXPERIMENTAL,\n"
.."    .long_name = NULL_IF_CONFIG_SMALL(\"JPEG 2000\"),\n"
.."    .pix_fmts =\n"
.."        (const enum PixelFormat[]) {PIX_FMT_GRAY8, PIX_FMT_RGB24, \n\nPIX_FMT_NONE}\n";
local szreg= "(%.%s-[%w_]+%s-=%s-%s-[^%b{}]-%s-[,}])";
local szreg2="(%.%s-[%w_]+%s-=%s-%b()%s-%b{}%s-[,}])"
--"(%b()%s-%b{})-"
local szreg3="(%.%s-[%w_]+%s-=%s-".."(%s-[^%b{}]-)((%b()%s-%b{})-)" .."%s-[,}])";
for index,value in string.gmatch(text,szreg3) do
	print("index\t",index,"\tvalue",value);
end
local tmp="%.%s-[%w_]+%s-=[%s-[%s%w_%b{}\"%[%]%(%)]+]?[%s-[%w_%b()\"]+]?[,}]";
local tmp2="%.%s-[%w_]+%s-=[%s-[%s%w_\"%[%]%(%)]+[%b{}]-]?[%s-[%w_%b()\",}]+]?";
local tmp3="[%.%s-[%w_=]+]?[[%s-[%s%w_\"%[%]%(%)]+[%b{}]-]?[%s-[%w_%b()\"]+[,}]]?]-";
local tmp4="[%.%s-[%w_=]+]?[[%s-[%s%w_\"%[%]%(%)]+[%b{}]-]?[%b{}]?[%s-[%w_%b()\"]+[,}]]?]-";
local tmp5="(%.%s-[%w_]+%s-)=(%s-(%b()%s-%b{})([%w_()]+)%s-[,}])";
--[[for index,value in string.gmatch(text2,"([%.]?%s-[%w_%b()%b{}%[%]\"%s]+%s-)") do
	print("index\t",index,"\tvalue",value);
end]]--
local text3="#if( FF_API_OLD_METADATA2)||\n1\n"
.."    const AVMetadataConv *metadata_conv;\n"
.."#elif \nsssss\n"
.."#if (FF_API_OLD_METADATA2) \n"
.."#endif\n"
.."#elif \n"
.."#endif";
local text4=".name           = \"video4linux,v4l\","
print(string.sub(text4,string.find(text4,"%b\"\"")))

版权所有,未经允许不得擅自转载.

源自:http://blog.youkuaiyun.com/weinyzhou/article/details/7533187

转载于:https://www.cnblogs.com/weinyzhou/archive/2012/05/03/4983504.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值