# eMultimedia **Repository Path**: thtfcccj/eMultimedia ## Basic Information - **Project Name**: eMultimedia - **Description**: 用于嵌入式系统中的多媒体音视频解码等 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-04-25 - **Last Updated**: 2024-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 嵌入式多媒体编解码库 * 此库的实现均独立于硬件,硬件无关的多媒体 * 此库全部使用静态内存实现,不需要动态内存即可实现,可用在资源受限的单片机等场景 * 所有.h接口文件脱离硬件,.c文件除以硬件结尾的外,其它均脱离硬件。 * 部分功能可裁剪 * 此库所有示例程序均位于:https://gitee.com/thtfcccj/cBootDcl 下的appBootDcl子项目 * 此库所有示例文件均位于:“Example”子项目,所有列出文件均已测试! ## WAV 音频文件播放支持 * 支持8位A律,u律,16位声音格式 * 支持立体声,单声道格式 ### WavParser .WAV 非压缩格式音频数据头解析 ### WavDecoder .WAV 非压缩格式音频的解码播放,原创程序。 * 通过获取原始数据回调实现了应用无关,可从各种途径获取 WAV格式数据 https://gitee.com/thtfcccj/CompComm/blob/master/DaStream/DaStreamExample2.c 为从MCU FLASH获取数据示例 * 底层适配DaStream模块(DA数据流),通过此中间层实现了硬件无关 * 支持立体声WAV,用单声道播出 * 暂未支持I2S播放 * 实现了立体声解码,单声道用双声道输出,但无硬件资源未调试 ## MP3 音频文件播放支持 ### Mp3Parser .Mp3 格式音频数据头解析 ### Mp3Decoder .Mp3 音频的解码播放,解码调用开源库:Helix 并重新实现了Helix在IAR中的汇编部分,收录进 https://gitee.com/thtfcccj/Helix.git * 通过获取原始数据回调实现了应用无关,可从各种途径获取 WAV格式数据 https://gitee.com/thtfcccj/CompComm/blob/master/DaStream/DaStreamExample3.c 为从MCU FLASH获取数据示例 * 底层适配DaStream模块(DA数据流),通过此中间层实现了硬件无关 * 暂未支持I2S播放 * 实现了立体声解码,但无硬件资源未调试 ## JPG图像文件 解码与显示支持 ### JpgParser .JPEG/JPG 图片格式数据头解析 ### JpgDecoder .Jpg图像的解码显示,含: * JpgDecoder.h 通用硬件无关接口 * JpgDecoder_TjpgDec.c 使用TjpgDec开源库(收录于:https://gitee.com/thtfcccj/TJpgDec)软解码通用实现 * JpgDecoderM2M_Soft.c 内存到内存(完整图片在内存或内部FLASH,解码至显示缓冲或内存),(软解码方式无关的)软解码实现 * JpgDecoderM2M_SWM341.c 内存到内存(完整图片在内存或内部FLASH,解码至显示缓冲或内存),使用SWM341上的JPEG硬件码实现 ### AVI视频文件 解码与显示支持 ### AviParser .Avi 视频格式数据头解析 ### AviDecoder * Avi视频的解码显示,支持格式为: + 视频为MJPEG格式 + 音频为MP3或PCM(16位AVI)格式 * 本模块设计为独立于硬件,依赖于下述模块并实现解码播放: + WavDecoder: PCM(16位AVI)格式音频 + Mp3Decoder: MP3格式音频 + JpgDecoder: MJPEG格式视频帧 * 此模块特性摘要: + 音视频流支持其一时,均可播放 + 支持暂停,拖动,重放功能 + 视频显示存不够时,直接播放,否则可缓冲播放 + 可选pingpong模式双缓冲:一帧解码图像,另一帧加载图像。 + 双缓冲在加载图像时,可实现为DMA模式,以提高MCU效率 ## BMP图像文件 解码与显示支持 * 支持1,2,4,8位 BMP索引图像格式 * 支持RLE8压缩,RLE4 BMP压缩格式 * 支持16,24,32位非索引图像格式显示(与显示屏格式相同时,将获得最快解格速度) ### BmpParser .Bmp 图片格式数据头解析 ### PngDecoder .Bmp图像的解码显示,含: * BmpDecoder.h 通用硬件无关接口 * BmpDecoder_ePic.c BMP图像格式的解码与显示, 使用前期开发的开源库"ePic"软解码通用实现 + 位于 https://gitee.com/thtfcccj/CompGUI.git 下的“ePic”目录,注意此库需其它开源库依赖 ## GIF图像文件 解码与播放/显示支持 静态图像(动图时为首帧)显示 与 动态多帧图像播放 二选一功能 ### GifParser .Gif 图片格式数据头解析 ### GifDecoder .Gif图像的解码显示,含: * GifDecoder.h 通用硬件无关接口 * GifDecoder_ePic.c 用于静态图像(动图时为首帧)图像格式的解码与显示, 使用前期开发的开源库"ePic"软解码通用实现 + 位于 https://gitee.com/thtfcccj/CompGUI.git 下的“ePic”目录,注意此库需其它开源库依赖 * GifDecoder_Dync.c GIF动态图像格式的解码与播放,使用前期开发的开源库"DecodeGIF"软解码通用实现 + 位于 https://gitee.com/thtfcccj/CompGUI.git 下的“DecodeGIF”目录,注意此库需其它开源库依赖 ## PNG图像文件 解码与显示支持 * 支持8位及以下索引图像的解码与显示 * 暂不支持PNG直接位图(16位,24位,32位)格式 ### PngParser .PNG 图片格式数据头解析 ### PngDecoder .PNG图像的解码显示,含: * PngDecoder.h 通用硬件无关接口 * PngDecoder_ePic.c PNG图像格式的解码与显示, 使用前期开发的开源库"ePic"软解码通用实现 + 位于 https://gitee.com/thtfcccj/CompGUI.git 下的“ePic”目录,注意此库需其它开源库依赖 ## gzip格式压缩文件的解码支持 ### gzipParser .gzip 压缩格式的数据头解析 ### gzipDecoder .gzip压缩文件的解码,含: * gzipDecoder.h 通用硬件无关接口 * gzipDecoder.c gzip压缩文件的解码, 使用前期开发的开源库"DeflateNano"软解码通用实现 + 位于 https://gitee.com/thtfcccj/CompComm.git 下的“DeflateNano”目录,注意此库需其它开源库依赖 ## 其它文件夹 ### VRAM 显示缓冲区的内存操作函数,含如: * copy,两倍放大copy * 转90度copy,转90度两倍放大copy等。 ### Example 此库所有功能的测试用例,其列出的文件均已测试! ## 上述未列出的外部依赖库说明: * https://gitee.com/thtfcccj/CompComm 通讯相关集合,内部含如: + 底层解码GIF/PNG所需的: bReader,WinWriter + PNG/gzip格式解码所需的 ZlibDecompress即Zlib解压子集,HuffmanTree即哈夫曼(解码)树 + PNG解码所需的 Adler32 校验 + DA数据流输出:DaStream * https://gitee.com/thtfcccj/CompGUI GUI相关集合,内部含如: + Color具体应用使用到的颜色定义 + PNG解压库 * https://gitee.com/thtfcccj/CompMix 其它公共库集合,,内部含如: + Delay 接口硬件无关定时器支持 + SDRAM 接口硬件无关SDRAM支持 + math 扩展数据库等