static int path_extension_type(const char *path) { if (BLO_has_bfile_extension(path)) { return FILE_TYPE_BLENDER; } else if (file_is_blend_backup(path)) { return FILE_TYPE_BLENDER_BACKUP; } else if (BLI_testextensie(path, ".app")) { return FILE_TYPE_APPLICATIONBUNDLE; } else if (BLI_testextensie(path, ".py")) { return FILE_TYPE_PYSCRIPT; } else if (BLI_testextensie_n(path, ".txt", ".glsl", ".osl", ".data", NULL)) { return FILE_TYPE_TEXT; } else if (BLI_testextensie_n(path, ".ttf", ".ttc", ".pfb", ".otf", ".otc", NULL)) { return FILE_TYPE_FTFONT; } else if (BLI_testextensie(path, ".btx")) { return FILE_TYPE_BTX; } else if (BLI_testextensie(path, ".dae")) { return FILE_TYPE_COLLADA; } else if (BLI_testextensie_array(path, imb_ext_image) || (G.have_quicktime && BLI_testextensie_array(path, imb_ext_image_qt))) { return FILE_TYPE_IMAGE; } else if (BLI_testextensie(path, ".ogg")) { if (IMB_isanim(path)) { return FILE_TYPE_MOVIE; } else { return FILE_TYPE_SOUND; } } else if (BLI_testextensie_array(path, imb_ext_movie)) { return FILE_TYPE_MOVIE; } else if (BLI_testextensie_array(path, imb_ext_audio)) { return FILE_TYPE_SOUND; } return 0; }
static int isffmpeg(const char *filename) { AVFormatContext *pFormatCtx = NULL; unsigned int i; int videoStream; AVCodec *pCodec; AVCodecContext *pCodecCtx; if (BLI_testextensie_n( filename, ".swf", ".jpg", ".png", ".dds", ".tga", ".bmp", ".tif", ".exr", ".cin", ".wav", NULL)) { return 0; } if (avformat_open_input(&pFormatCtx, filename, NULL, NULL) != 0) { if (UTIL_DEBUG) fprintf(stderr, "isffmpeg: av_open_input_file failed\n"); return 0; } if (avformat_find_stream_info(pFormatCtx, NULL) < 0) { if (UTIL_DEBUG) fprintf(stderr, "isffmpeg: avformat_find_stream_info failed\n"); avformat_close_input(&pFormatCtx); return 0; } if (UTIL_DEBUG) av_dump_format(pFormatCtx, 0, filename, 0); /* Find the first video stream */ videoStream = -1; for (i = 0; i < pFormatCtx->nb_streams; i++) if (pFormatCtx->streams[i] && pFormatCtx->streams[i]->codec && (pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)) { videoStream = i; break; } if (videoStream == -1) { avformat_close_input(&pFormatCtx); return 0; } pCodecCtx = pFormatCtx->streams[videoStream]->codec; /* Find the decoder for the video stream */ pCodec = avcodec_find_decoder(pCodecCtx->codec_id); if (pCodec == NULL) { avformat_close_input(&pFormatCtx); return 0; } if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0) { avformat_close_input(&pFormatCtx); return 0; } avcodec_close(pCodecCtx); avformat_close_input(&pFormatCtx); return 1; }