⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 detect_file_type.c

📁 1. 8623L平台
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#define ALLOW_OS_CODE 1#include "rmdef/rmdef.h"#include "rmcore/include/rmcore.h"#include "rmlibcw/include/rmlibcw.h"#include "rmdetector3api/include/rmdetector3api.h"#define DETECTION_THRESHOLD 512  // in KBstatic RMuint32 g_nestingLevel = 0;static RMuint32 g_currentRootStreamID = 0;static RMuint8 *print_type(enum RMdetector3_streamType type){	switch (type) {	case RMdetector3_streamType_UNKNOWN:		return (RMuint8 *)"unknown";	case RMdetector3_streamType_ELEMENTARY_AUDIO:		return (RMuint8 *)"elementary_audio";	case RMdetector3_streamType_ELEMENTARY_VIDEO:		return (RMuint8 *)"elementary_video";	case RMdetector3_streamType_SYSTEM:		return (RMuint8 *)"system";	// pictures	case RMdetector3_streamType_BMP:		return (RMuint8 *)"bmp";	case RMdetector3_streamType_JPEG:		return (RMuint8 *)"jpeg";	case RMdetector3_streamType_TIFF:		return (RMuint8 *)"tiff";	case RMdetector3_streamType_PNG:		return (RMuint8 *)"png";	case RMdetector3_streamType_GIF:		return (RMuint8 *)"gif";	// elementary audio	case RMdetector3_streamType_AUDIO_AC3:		return (RMuint8 *)"audio_ac3";	case RMdetector3_streamType_AUDIO_ADIF:		return (RMuint8 *)"audio_adif";	case RMdetector3_streamType_AUDIO_ADTS:		return (RMuint8 *)"audio_adts";	case RMdetector3_streamType_AUDIO_DTS:		return (RMuint8 *)"audio_dts";	case RMdetector3_streamType_AUDIO_DVD:		return (RMuint8 *)"audio_dvd";	case RMdetector3_streamType_AUDIO_LATM:		return (RMuint8 *)"audio_latm";	case RMdetector3_streamType_AUDIO_MPEG1:		return (RMuint8 *)"audio_mpeg1";	case RMdetector3_streamType_AUDIO_MPEG1_LAYER3:		return (RMuint8 *)"audio_mpeg1_layer3";	case RMdetector3_streamType_AUDIO_MPEG2:		return (RMuint8 *)"audio_mpeg2";	case RMdetector3_streamType_AUDIO_MPEG2_LAYER1:		return (RMuint8 *)"audio_mpeg2_layer1";	case RMdetector3_streamType_AUDIO_MPEG2_LAYER2:		return (RMuint8 *)"audio_mpeg2_layer2";	case RMdetector3_streamType_AUDIO_MPEG2_LAYER3:		return (RMuint8 *)"audio_mpeg2_layer3";	case RMdetector3_streamType_AUDIO_PCM:		return (RMuint8 *)"audio_pcm";	case RMdetector3_streamType_AUDIO_REVERSE_PCM:		return (RMuint8 *)"audio_reverse_pcm";	case RMdetector3_streamType_AUDIO_WMA:		return (RMuint8 *)"audio_wma";	case RMdetector3_streamType_AUDIO_WMAPRO:		return (RMuint8 *)"audio_wmapro";	case RMdetector3_streamType_AUDIO_WMATS:		return (RMuint8 *)"audio_wmats";	// elementary video	case RMdetector3_streamType_VIDEO_DIVX3:		return (RMuint8 *)"video_divx3";	case RMdetector3_streamType_VIDEO_DIVX4:		return (RMuint8 *)"video_divx4";	case RMdetector3_streamType_VIDEO_H263:		return (RMuint8 *)"video_h263";	case RMdetector3_streamType_VIDEO_H264:		return (RMuint8 *)"video_h264";	case RMdetector3_streamType_VIDEO_MJPEG:		return (RMuint8 *)"video_mjpeg";	case RMdetector3_streamType_VIDEO_MPEG12:		return (RMuint8 *)"video_mpeg2";	case RMdetector3_streamType_VIDEO_MPEG4:		return (RMuint8 *)"video_mpeg4";	case RMdetector3_streamType_VIDEO_VC1:		return (RMuint8 *)"video_vc1";	case RMdetector3_streamType_VIDEO_WMV:		return (RMuint8 *)"video_wmv";	case RMdetector3_streamType_VIDEO_XVID:		return (RMuint8 *)"xvid";	// system	case RMdetector3_streamType_SYSTEM_ASF:		return (RMuint8 *)"system_asf";	case RMdetector3_streamType_SYSTEM_AVI:		return (RMuint8 *)"system_avi";	case RMdetector3_streamType_SYSTEM_DVD:		return (RMuint8 *)"system_dvd";	case RMdetector3_streamType_SYSTEM_ID3:		return (RMuint8 *)"system_id3";	case RMdetector3_streamType_SYSTEM_M1S:		return (RMuint8 *)"system_m1s";	case RMdetector3_streamType_SYSTEM_M2P:		return (RMuint8 *)"system_m2p";	case RMdetector3_streamType_SYSTEM_M2T:		return (RMuint8 *)"system_m2t";	case RMdetector3_streamType_SYSTEM_M2T_192:		return (RMuint8 *)"system_m2t_192";	case RMdetector3_streamType_SYSTEM_MP4:		return (RMuint8 *)"system_mp4";	case RMdetector3_streamType_SYSTEM_RIFFCDXA:		return (RMuint8 *)"system_riff/cdxa";	case RMdetector3_streamType_SYSTEM_RIFFWAVE:		return (RMuint8 *)"system_riff/wave";	}	return (RMuint8 *)"unknown";}static void system_stream_callback(void *context, struct RM_Detection3_Specific_Info info, RMuint32 parentStreamID, RMuint32 streamID){	RMuint32 i;	if (parentStreamID == streamID)		g_currentRootStreamID = streamID;	if (parentStreamID != g_currentRootStreamID) {		g_nestingLevel++;		for (i = 0; i < g_nestingLevel; i++)			fprintf(stderr, "\t");	}	g_currentRootStreamID = streamID;	fprintf(stderr, "[%2lu %2lu ] %s\n", parentStreamID, streamID, print_type(info.type));	// get specific data.	switch (info.type) {	case RMdetector3_streamType_UNKNOWN:	case RMdetector3_streamType_ELEMENTARY_AUDIO:	case RMdetector3_streamType_ELEMENTARY_VIDEO:	case RMdetector3_streamType_SYSTEM:		break;	// elementary audio	case RMdetector3_streamType_AUDIO_AC3:	case RMdetector3_streamType_AUDIO_ADIF:	case RMdetector3_streamType_AUDIO_ADTS:	case RMdetector3_streamType_AUDIO_DTS:	case RMdetector3_streamType_AUDIO_DVD:	case RMdetector3_streamType_AUDIO_LATM:	case RMdetector3_streamType_AUDIO_MPEG1: //unused?	case RMdetector3_streamType_AUDIO_MPEG1_LAYER3:	case RMdetector3_streamType_AUDIO_MPEG2: //unused?	case RMdetector3_streamType_AUDIO_MPEG2_LAYER1:	case RMdetector3_streamType_AUDIO_MPEG2_LAYER2:	case RMdetector3_streamType_AUDIO_MPEG2_LAYER3:	case RMdetector3_streamType_AUDIO_PCM:	case RMdetector3_streamType_AUDIO_REVERSE_PCM:	case RMdetector3_streamType_AUDIO_WMA:	case RMdetector3_streamType_AUDIO_WMAPRO:	case RMdetector3_streamType_AUDIO_WMATS:		break;	// pictures	case RMdetector3_streamType_BMP:	case RMdetector3_streamType_JPEG:	case RMdetector3_streamType_TIFF:	case RMdetector3_streamType_PNG:	case RMdetector3_streamType_GIF:		break;	// elementary video	case RMdetector3_streamType_VIDEO_DIVX3:	case RMdetector3_streamType_VIDEO_DIVX4:	case RMdetector3_streamType_VIDEO_H263:	case RMdetector3_streamType_VIDEO_H264:	case RMdetector3_streamType_VIDEO_MJPEG:	case RMdetector3_streamType_VIDEO_MPEG12:	case RMdetector3_streamType_VIDEO_MPEG4:	case RMdetector3_streamType_VIDEO_VC1:	case RMdetector3_streamType_VIDEO_WMV:	case RMdetector3_streamType_VIDEO_XVID:		break;	// system	case RMdetector3_streamType_SYSTEM_ASF:	case RMdetector3_streamType_SYSTEM_AVI:	case RMdetector3_streamType_SYSTEM_DVD:		break;	case RMdetector3_streamType_SYSTEM_ID3:		fprintf(stderr, "ID3: bitstream offset %lu\n", info.data.system.data.id3.bitstream_offset);		break;	case RMdetector3_streamType_SYSTEM_M1S:	case RMdetector3_streamType_SYSTEM_M2P:	case RMdetector3_streamType_SYSTEM_M2T:	case RMdetector3_streamType_SYSTEM_M2T_192:	case RMdetector3_streamType_SYSTEM_MP4:	case RMdetector3_streamType_SYSTEM_RIFFCDXA:	case RMdetector3_streamType_SYSTEM_RIFFWAVE:		break;	}	return;}static void video_stream_callback(void *context, struct RM_Detection3_Specific_Info info, RMuint32 parentStreamID, RMuint32 streamID){	RMuint32 i;	if (parentStreamID == g_currentRootStreamID) {		for (i = 0; i < g_nestingLevel + 1; i++)			fprintf(stderr, "\t");	}	fprintf(stderr, "[%2lu %2lu ] %s", parentStreamID, streamID, print_type(info.type));	if (!info.data.video.PID_INFO_VALID)		fprintf(stderr, "\n");	else		fprintf(stderr, " (pid=%lu [0x%lx] subid=%lu [0x%lx] pidType=%lu [0x%lx])\n", 			info.data.video.pid, 			info.data.video.pid, 			info.data.video.subid, 			info.data.video.subid, 			info.data.video.pidType,			info.data.video.pidType);	// get specific data	//RMDetector3GetStreamSpecificInfo(context, streamNum, type, &info);	// big switch...	switch (info.type) {	case RMdetector3_streamType_UNKNOWN:	case RMdetector3_streamType_ELEMENTARY_AUDIO:	case RMdetector3_streamType_ELEMENTARY_VIDEO:	case RMdetector3_streamType_SYSTEM:		break;	// elementary audio	case RMdetector3_streamType_AUDIO_AC3:	case RMdetector3_streamType_AUDIO_ADIF:	case RMdetector3_streamType_AUDIO_ADTS:	case RMdetector3_streamType_AUDIO_DTS:	case RMdetector3_streamType_AUDIO_DVD:	case RMdetector3_streamType_AUDIO_LATM:	case RMdetector3_streamType_AUDIO_MPEG1: //unused?	case RMdetector3_streamType_AUDIO_MPEG1_LAYER3:	case RMdetector3_streamType_AUDIO_MPEG2: //unused?	case RMdetector3_streamType_AUDIO_MPEG2_LAYER1:	case RMdetector3_streamType_AUDIO_MPEG2_LAYER2:	case RMdetector3_streamType_AUDIO_MPEG2_LAYER3:	case RMdetector3_streamType_AUDIO_PCM:	case RMdetector3_streamType_AUDIO_REVERSE_PCM:	case RMdetector3_streamType_AUDIO_WMA:	case RMdetector3_streamType_AUDIO_WMAPRO:	case RMdetector3_streamType_AUDIO_WMATS:		break;	// pictures	case RMdetector3_streamType_BMP:	case RMdetector3_streamType_JPEG:	case RMdetector3_streamType_TIFF:	case RMdetector3_streamType_PNG:	case RMdetector3_streamType_GIF:		break;	// elementary video	case RMdetector3_streamType_VIDEO_DIVX3:	case RMdetector3_streamType_VIDEO_DIVX4:	case RMdetector3_streamType_VIDEO_H263:	case RMdetector3_streamType_VIDEO_H264:	case RMdetector3_streamType_VIDEO_MJPEG:	case RMdetector3_streamType_VIDEO_MPEG12:	case RMdetector3_streamType_VIDEO_MPEG4:		if (info.data.video.skipNCP)			fprintf(stderr, "\tMPEG4 skip NCP = 1\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -