Tag: 解码

C ++:从字符串中删除所有HTML格式?

我有一个字符串,可能包括br或span … / span标签或其他HTML字符/实体。 我想要一个强大的方法来剥离所有这些并获得剩余的UTF-8字符。 理想情况下,这应该是跨平台的。 这样的事情是理想的: http://snipplr.com/view/15261/python-decode-and-strip-html-entites-to-unicode/ 但这也删除了标签。

x86架构中的指令解码

我正在为我的实验室开发一个操作系统项目,我将使用指令指针和指令操作码。 现在我需要知道的是它是什么类型的指令。 为此,我正在从指令指针指向的地址读取数据。 该数据的第一个字节给出了指令类型。 例如,如果第一个字节是0xC6 ,则它是MOVB指令。 现在有些情况下指令指针的第一个字节是0x0F 。 根据文档0x0F ,这意味着它是一个双字节指令。 我的问题是这种类型的指令。 我不知道如何找出双字节指令的指令类型。 在那之后,我的第二个优先级是两个找出指令的操作数。 我不知道从代码中做到这一点。 任何示例代码将不胜感激 第三,需要找出指令的大小。 由于x86是可变长度,我想知道每个指令的大小。 起初我打算使用查找表,我将维护指令名称及其大小。 但后来我发现相同的指令可以有不同的长度。 例如,当我在.o文件上使用对象转储时,我发现了两条指令C6 00 62 ,用于MOVB $0x62,(%EAX)和C6 85 2C FF FF FF 00 ,用于MOVB $0x0,-0xD4(%EBP) 。 看这里两个指令类型相同( C6 )但是长度不同。 所以我需要回答这些问题。 如果有人能给我一些解决方案,我们将非常感激。

Android如何增加ffmpeg mp4的性能?

我已经检测到函数avcodec_decode_audio3在mp4格式下运行缓慢,这里是解码音频的代码周期: while (av_read_frame(av_format_context, &packet) >= 0 && is_play == 1) { if (av_codec_context->codec_type == AVMEDIA_TYPE_AUDIO && is_play == 1) { int out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE; int size = packet.size; int n; int dataLength = size; int decoded = 0; while (size > 0) { //start measure time gettimeofday(&tvBegin, NULL); int len = avcodec_decode_audio3(av_codec_context, (int16_t *) pAudioBuffer, […]

通过并集和位移读取双平台字节序,是否安全?

我所看到的所有从缓冲区到平台字节序读取已知字节序的两倍的例子包括检测当前平台的字节顺序并在必要时执行字节交换。 另一方面,除了使用位移的整数( 一个这样的例子 )之外,我已经看到了另一种做同样事情的方法。 这让我觉得有可能使用union和bitshift技术从缓冲区中读取双精度(和浮点数),并且快速测试实现似乎有效(至少在x86_64上使用clang): #include #include #include double read_double(char * buffer, bool le) { union { double d; uint64_t i; } data; data.i = 0; int off = le ? 0 : 7; int add = le ? 1 : -1; for (int i = 0; i < 8; i++) { data.i |= ((uint64_t)(buffer[off] […]

用C / C ++解码和匹配Chip 8操作码

我正在编写一个Chip 8仿真器作为仿真的介绍,我有点迷茫。 基本上,我已经阅读了Chip 8 ROM并将其存储在内存中的char数组中。 然后,按照指南,我使用以下代码检索当前程序计数器(pc)上的操作码: // Fetch opcode opcode = memory[pc] << 8 | memory[pc + 1]; 芯片8操作码每个2字节。 这是一个指南中的代码,我模糊地理解为向内存[pc]添加8个额外的位空间(使用<< 8)然后将内存[pc + 1]与它合并(使用|)并将结果存储在操作码变量中。 既然我已经隔离了操作码,我真的不知道如何处理它。 我正在使用这个操作码表,基本上我将我读取的hex操作码与该表中的操作码标识符相匹配。 另外,我意识到我正在阅读的许多操作码也包含操作数(我假设后一个字节?),这可能使我的情况更加复杂。 救命?!

在不使用OpenMAX的情况下解码Raspberry Pi中的video?

我正在寻找一个直接在Raspberry Pi上解码video的例子,而不使用OpenMAX。 这解释了多媒体软件的不同层次: 还有一个未在此处显示的附加层,“ MMAL ”层(我相信)是围绕OpenMAX的Broadcom包装器。 (如果不是,它将是一个OpenMAX备选方案,位于内核驱动程序之上)例如,使用MMAL编写raspivid和raspistill。 我想要一个video解码的例子,其中输入是原始H.264,输出是内存中的video或屏幕上的video。 我想直接使用VCHIQ ,而不是使用OpenMAX。 (主要是出于性能和灵活性的原因) 这个github存储库: https : //github.com/raspberrypi/userland/包含上面显示的所有内容的源(橙色和绿色框; VCHIQ本身的源代码,VCHIQ之上的OpenMAX IL实现,以及OpenGL和EGL实现,。 ..)。 所以在理论上它应该足以开始。 问题在于如何使用它是非常不明显的,即使一个人非常熟悉OpenMAX和一般的多媒体框架。 例如: vchiq_bulk_transmit ()似乎是用于将video发送到解码器的function。 但是如何初始化VCHIQ_SERVICE_HANDLE_T类型的第一个参数? 结果在哪里,在帧缓冲区中,或在结果句柄中,还是……? 编辑可以通过使用vchiq提供video解码的工作示例,显示调用序列的API演练(尽管不是一个工作示例)或指向足够的文档来编写它来收集赏金。 一个工作的例子将得到一个巨额额外的赏金:)

如何在C中将单个位写入文件

我正在编程一个熵编码算法,我想把像编码字符这样的单个位写入文件。 例如,我想将011写入文件,但如果将其存储为字符,则需要3个字节而不是3个字节。 所以我的最后一个问题是:如何将单个位写入文件? 提前致谢!