static codec_data_t *xvid_create (const char *stream_type, const char *compressor, int type, int profile, format_list_t *media_fmt, video_info_t *vinfo, const uint8_t *userdata, uint32_t ud_size, video_vft_t *vft, void *ifptr) { xvid_codec_t *xvid; xvid = MALLOC_STRUCTURE(xvid_codec_t); memset(xvid, 0, sizeof(*xvid)); xvid->m_vft = vft; xvid->m_ifptr = ifptr; xvid_gbl_init_t gbl_init; gbl_init.version = XVID_VERSION; gbl_init.cpu_flags = 0; xvid_global(NULL, 0, &gbl_init, NULL); xvid->m_decodeState = XVID_STATE_VO_SEARCH; if (media_fmt != NULL && media_fmt->fmt_param != NULL) { // See if we can decode a passed in vovod header if (parse_vovod(xvid, media_fmt->fmt_param, 1, 0) == 0) { xvid->m_decodeState = XVID_STATE_WAIT_I; } } else if (userdata != NULL) { if (parse_vovod(xvid, (char *)userdata, 0, ud_size) == 0) { xvid->m_decodeState = XVID_STATE_WAIT_I; } } xvid->m_vinfo = vinfo; xvid->m_num_wait_i = 0; xvid->m_num_wait_i_frames = 0; xvid->m_total_frames = 0; xvid_message(LOG_DEBUG, "xvid", "created xvid"); return ((codec_data_t *)xvid); }
static codec_data_t *iso_create (const char *stream_type, const char *compressor, int type, int profile, format_list_t *media_fmt, video_info_t *vinfo, const uint8_t *userdata, uint32_t ud_size, video_vft_t *vft, void *ifptr) { iso_decode_t *iso; iso = MALLOC_STRUCTURE(iso_decode_t); if (iso == NULL) return NULL; memset(iso, 0, sizeof(*iso)); iso->m_vft = vft; iso->m_ifptr = ifptr; iso->m_main_short_video_header = FALSE; iso->m_pvodec = new CVideoObjectDecoder(); iso->m_decodeState = DECODE_STATE_VOL_SEARCH; if (media_fmt != NULL && media_fmt->fmt_param != NULL) { // See if we can decode a passed in vovod header if (parse_vovod(iso, media_fmt->fmt_param, 1, 0) == 1) { iso->m_decodeState = DECODE_STATE_WAIT_I; } } else if (userdata != NULL) { if (parse_vovod(iso, (const char *)userdata, 0, ud_size) == 1) { iso->m_decodeState = DECODE_STATE_WAIT_I; } } iso->m_vinfo = vinfo; iso->m_num_wait_i = 0; iso->m_num_wait_i_frames = 0; iso->m_total_frames = 0; return (codec_data_t *)iso; }