return tc_magick_frameout(&pd->magick, pd->img_fmt, outframe); } /*************************************************************************/ static const TCCodecID tc_im_codecs_video_in[] = { TC_CODEC_RGB24, TC_CODEC_ERROR }; TC_MODULE_AUDIO_UNSUPPORTED(tc_im); TC_MODULE_CODEC_FORMATS(tc_im); TC_MODULE_INFO(tc_im); static const TCModuleClass tc_im_class = { TC_MODULE_CLASS_HEAD(tc_im), .init = tc_im_init, .fini = tc_im_fini, .configure = tc_im_configure, .stop = tc_im_stop, .inspect = tc_im_inspect, .encode_video = tc_im_encode_video, }; TC_MODULE_ENTRY_POINT(tc_im); /*************************************************************************/ /*
TC_MODULE_GENERIC_FINI(tc_vorbis); /*************************************************************************/ static const TCCodecID tc_vorbis_codecs_in[] = { TC_CODEC_PCM, TC_CODEC_ERROR }; static const TCCodecID tc_vorbis_codecs_out[] = { TC_CODEC_VORBIS, TC_CODEC_ERROR }; TC_MODULE_CODEC_FORMATS(tc_vorbis); TC_MODULE_INFO(tc_vorbis); static const TCModuleClass tc_vorbis_class = { TC_MODULE_CLASS_HEAD(tc_vorbis), .init = tc_vorbis_init, .fini = tc_vorbis_fini, .configure = tc_vorbis_configure, .stop = tc_vorbis_stop, .inspect = tc_vorbis_inspect, .encode_audio = tc_vorbis_encode_audio, }; TC_MODULE_ENTRY_POINT(tc_vorbis); /*************************************************************************/ /*
} return vsize + asize; } /*************************************************************************/ static const TCCodecID null_codecs_in[] = { TC_CODEC_ANY, TC_CODEC_ERROR }; static const TCFormatID null_formats_out[] = { TC_FORMAT_NULL, TC_FORMAT_ERROR }; /* a multiplexor is at the end of pipeline */ TC_MODULE_MPLEX_FORMATS_CODECS(null); TC_MODULE_INFO(null); static const TCModuleClass null_class = { TC_MODULE_CLASS_HEAD(null), .init = null_init, .fini = null_fini, .configure = null_configure, .stop = null_stop, .inspect = null_inspect, .multiplex = null_multiplex, }; TC_MODULE_ENTRY_POINT(null) /*************************************************************************/ /*
/*************************************************************************/ static const TCCodecID fields_codecs_video_in[] = { TC_CODEC_YUV420P, TC_CODEC_RGB24, TC_CODEC_ERROR }; static const TCCodecID fields_codecs_video_out[] = { TC_CODEC_YUV420P, TC_CODEC_RGB24, TC_CODEC_ERROR }; TC_MODULE_AUDIO_UNSUPPORTED(fields); TC_MODULE_FILTER_FORMATS(fields); TC_MODULE_INFO(fields); static const TCModuleClass fields_class = { TC_MODULE_CLASS_HEAD(fields), .init = fields_init, .fini = fields_fini, .configure = fields_configure, .stop = fields_stop, .inspect = fields_inspect, .filter_video = fields_filter_video, }; TC_MODULE_ENTRY_POINT(fields) /*************************************************************************/ static int fields_get_config(TCModuleInstance *self, char *options)
return TC_OK; }; static const TCCodecID transform_codecs_in[] = { TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_RGB, TC_CODEC_ERROR }; static const TCCodecID transform_codecs_out[] = { TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_RGB, TC_CODEC_ERROR }; TC_MODULE_FILTER_FORMATS(transform); TC_MODULE_INFO(transform); static const TCModuleClass transform_class = { TC_MODULE_CLASS_HEAD(transform), .init = transform_init, .fini = transform_fini, .configure = transform_configure, .stop = transform_stop, .inspect = transform_inspect, .filter_video = transform_filter_video, }; TC_MODULE_ENTRY_POINT(transform) /*************************************************************************/ static int transform_get_config(TCModuleInstance *self, char *options)
} /*************************************************************************/ static const TCCodecID invert_codecs_in[] = { TC_CODEC_RGB24, TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_ERROR }; static const TCCodecID invert_codecs_out[] = { TC_CODEC_RGB24, TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_ERROR }; TC_MODULE_FILTER_FORMATS(invert); TC_MODULE_INFO(invert); static const TCModuleClass invert_class = { TC_MODULE_CLASS_HEAD(invert), .init = invert_init, .fini = invert_fini, .configure = invert_configure, .stop = invert_stop, .inspect = invert_inspect, .filter_video = invert_filter_video }; TC_MODULE_ENTRY_POINT(invert) /*************************************************************************/ static int invert_get_config(TCModuleInstance *self, char *options)
} /*************************************************************************/ static const TCCodecID astat_codecs_in[] = { TC_CODEC_PCM, TC_CODEC_ERROR }; static const TCCodecID astat_codecs_out[] = { TC_CODEC_PCM, TC_CODEC_ERROR }; TC_MODULE_FILTER_FORMATS(astat); TC_MODULE_INFO(astat); static const TCModuleClass astat_class = { TC_MODULE_CLASS_HEAD(astat), .init = astat_init, .fini = astat_fini, .configure = astat_configure, .stop = astat_stop, .inspect = astat_inspect, .filter_audio = astat_filter_audio, }; TC_MODULE_ENTRY_POINT(astat) /*************************************************************************/ static int astat_get_config(TCModuleInstance *self, char *options)
static const TCFormatID vag_formats_out[] = { TC_FORMAT_ERROR }; static const TCModuleInfo vag_info = { .features = MOD_FEATURES, .flags = MOD_FLAGS, .name = MOD_NAME, .version = MOD_VERSION, .description = MOD_CAP, .codecs_in = vag_codecs_in, .codecs_out = vag_codecs_out, .formats_in = vag_formats_in, .formats_out = vag_formats_out }; static const TCModuleClass vag_class = { TC_MODULE_CLASS_HEAD(vag), .init = vag_init, .fini = vag_fini, .configure = vag_configure, .stop = vag_stop, .inspect = vag_inspect, .decode_audio = vag_decode, }; TC_MODULE_ENTRY_POINT(vag) /*************************************************************************/ /*************************************************************************/
/*************************************************************************/ static const TCCodecID logo_codecs_video_in[] = { TC_CODEC_RGB24, TC_CODEC_YUV420P, TC_CODEC_ERROR }; static const TCCodecID logo_codecs_video_out[] = { TC_CODEC_RGB24, TC_CODEC_YUV420P, TC_CODEC_ERROR }; TC_MODULE_AUDIO_UNSUPPORTED(logo); TC_MODULE_FILTER_FORMATS(logo); TC_MODULE_INFO(logo); static const TCModuleClass logo_class = { TC_MODULE_CLASS_HEAD(logo), .init = logo_init, .fini = logo_fini, .configure = logo_configure, .stop = logo_stop, .inspect = logo_inspect, .filter_video = logo_filter_video, }; TC_MODULE_ENTRY_POINT(logo) /*************************************************************************/ static int logo_get_config(TCModuleInstance *self, char *options)
return TC_OK; } static const TCCodecID deshake_codecs_in[] = { TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_RGB, TC_CODEC_ERROR }; static const TCCodecID deshake_codecs_out[] = { TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_RGB, TC_CODEC_ERROR }; TC_MODULE_FILTER_FORMATS(deshake); TC_MODULE_INFO(deshake); static const TCModuleClass deshake_class = { TC_MODULE_CLASS_HEAD(deshake), .init = deshake_init, .fini = deshake_fini, .configure = deshake_configure, .stop = deshake_stop, .inspect = deshake_inspect, .filter_video = deshake_filter_video, }; TC_MODULE_ENTRY_POINT(deshake) /*************************************************************************/ static int deshake_get_config(TCModuleInstance *self, char *options)
static const TCFormatID nuv_formats_out[] = { TC_FORMAT_ERROR }; static const TCModuleInfo nuv_info = { .features = MOD_FEATURES, .flags = MOD_FLAGS, .name = MOD_NAME, .version = MOD_VERSION, .description = MOD_CAP, .codecs_in = nuv_codecs_in, .codecs_out = nuv_codecs_out, .formats_in = nuv_formats_in, .formats_out = nuv_formats_out }; static const TCModuleClass nuv_class = { TC_MODULE_CLASS_HEAD(nuv), .init = nuv_init, .fini = nuv_fini, .configure = nuv_configure, .stop = nuv_stop, .inspect = nuv_inspect, .decode_video = nuv_decode_video, .demultiplex = nuv_demultiplex, }; TC_MODULE_ENTRY_POINT(nuv) /*************************************************************************/ /*************************************************************************/
/*************************************************************************/ static const TCCodecID faac_codecs_audio_in[] = { TC_CODEC_PCM, TC_CODEC_ERROR }; static const TCCodecID faac_codecs_audio_out[] = { TC_CODEC_AAC, TC_CODEC_ERROR }; TC_MODULE_VIDEO_UNSUPPORTED(faac); TC_MODULE_CODEC_FORMATS(faac); TC_MODULE_INFO(faac); static const TCModuleClass faac_class = { TC_MODULE_CLASS_HEAD(faac), .init = faac_init, .fini = faac_fini, .configure = faac_configure, .stop = faac_stop, .inspect = faac_inspect, .encode_audio = faac_encode, .flush_audio = faac_flush, }; TC_MODULE_ENTRY_POINT(faac); /*************************************************************************/
return TC_OK; } /*************************************************************************/ static const TCCodecID doublefps_codecs_in[] = { TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_PCM, TC_CODEC_ERROR }; static const TCCodecID doublefps_codecs_out[] = { TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_PCM, TC_CODEC_ERROR }; TC_MODULE_FILTER_FORMATS(doublefps); TC_MODULE_INFO(doublefps); static const TCModuleClass doublefps_class = { TC_MODULE_CLASS_HEAD(doublefps), .init = doublefps_init, .fini = doublefps_fini, .configure = doublefps_configure, .stop = doublefps_stop, .inspect = doublefps_inspect, .filter_video = doublefps_filter_video, /* We have to handle the audio too! */ .filter_audio = doublefps_filter_audio, }; TC_MODULE_ENTRY_POINT(doublefps) /*************************************************************************/
} pd->framecount++; return vframe->video_len; } /*************************************************************************/ static const TCCodecID pvn_codecs_in[] = { TC_CODEC_RGB24, TC_CODEC_ERROR }; static const TCFormatID pvn_formats_out[] = { TC_FORMAT_PVN, TC_CODEC_ERROR }; /* a multiplexor is at the end of pipeline */ TC_MODULE_MPLEX_FORMATS_CODECS(pvn); TC_MODULE_INFO(pvn); static const TCModuleClass pvn_class = { TC_MODULE_CLASS_HEAD(pvn), .init = pvn_init, .fini = pvn_fini, .configure = pvn_configure, .stop = pvn_stop, .inspect = pvn_inspect, .multiplex = pvn_multiplex, }; TC_MODULE_ENTRY_POINT(pvn); /*************************************************************************/ /* * Local variables:
/*************************************************************************/ static const TCCodecID tc_y4m_codecs_in[] = { TC_CODEC_YUV420P, TC_CODEC_ERROR }; static const TCFormatID tc_y4m_formats_out[] = { TC_FORMAT_YUV4MPEG, TC_FORMAT_ERROR }; /* a multiplexor is at the end of pipeline */ TC_MODULE_MPLEX_FORMATS_CODECS(tc_y4m); TC_MODULE_INFO(tc_y4m); static const TCModuleClass tc_y4m_class = { TC_MODULE_CLASS_HEAD(tc_y4m), .init = tc_y4m_init, .fini = tc_y4m_fini, .configure = tc_y4m_configure, .stop = tc_y4m_stop, .inspect = tc_y4m_inspect, .multiplex = tc_y4m_multiplex, }; TC_MODULE_ENTRY_POINT(tc_y4m); /*************************************************************************/ /*
}; static const TCModuleInfo yw_info = { .features = MOD_FEATURES, .flags = MOD_FLAGS, .name = MOD_NAME, .version = MOD_VERSION, .description = MOD_CAP, .codecs_in = yw_codecs_in, .codecs_out = yw_codecs_out, .formats_in = yw_formats_in, .formats_out = yw_formats_out }; static const TCModuleClass yw_class = { TC_MODULE_CLASS_HEAD(yw), .init = yw_init, .fini = yw_fini, .configure = yw_configure, .stop = yw_stop, .inspect = yw_inspect, .multiplex = yw_multiplex, }; TC_MODULE_ENTRY_POINT(yw); /*************************************************************************/ /*
return TC_OK; } /*************************************************************************/ static const TCCodecID raw_codecs_in[] = { TC_CODEC_ANY, TC_CODEC_ERROR }; static const TCFormatID raw_formats_out[] = { TC_FORMAT_RAW, TC_FORMAT_ERROR }; /* a multiplexor is at the end of pipeline */ TC_MODULE_MPLEX_FORMATS_CODECS(raw); TC_MODULE_INFO(raw); static const TCModuleClass raw_class = { TC_MODULE_CLASS_HEAD(raw), .init = raw_init, .fini = raw_fini, .configure = raw_configure, .stop = raw_stop, .inspect = raw_inspect, .multiplex = raw_multiplex, }; TC_MODULE_ENTRY_POINT(raw) /*************************************************************************/ /*
/*************************************************************************/ /*************************************************************************/ static const TCCodecID sdlview_codecs_in[] = { TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_RGB24, TC_CODEC_ERROR }; static const TCCodecID sdlview_codecs_out[] = { TC_CODEC_YUV420P, TC_CODEC_YUV422P, TC_CODEC_RGB24, TC_CODEC_ERROR }; TC_MODULE_FILTER_FORMATS(sdlview); TC_MODULE_INFO(sdlview); static const TCModuleClass sdlview_class = { TC_MODULE_CLASS_HEAD(sdlview), .init = sdlview_init, .fini = sdlview_fini, .configure = sdlview_configure, .stop = sdlview_stop, .inspect = sdlview_inspect, .filter_video = sdlview_filter_video, }; TC_MODULE_ENTRY_POINT(sdlview) /*************************************************************************/ static int sdlview_get_config(TCModuleInstance *self, char *options)
static const TCFormatID tc_x11_formats_out[] = { TC_FORMAT_ERROR }; static const TCModuleInfo tc_x11_info = { .features = MOD_FEATURES, .flags = MOD_FLAGS, .name = MOD_NAME, .version = MOD_VERSION, .description = MOD_CAP, .codecs_in = tc_x11_codecs_in, .codecs_out = tc_x11_codecs_out, .formats_in = tc_x11_formats_in, .formats_out = tc_x11_formats_out }; static const TCModuleClass tc_x11_class = { TC_MODULE_CLASS_HEAD(tc_x11), .init = tc_x11_init, .fini = tc_x11_fini, .configure = tc_x11_configure, .stop = tc_x11_stop, .inspect = tc_x11_inspect, .demultiplex = tc_x11_demultiplex, }; TC_MODULE_ENTRY_POINT(tc_x11) /*************************************************************************/ /*************************************************************************/
/*************************************************************************/ static const TCCodecID lowpass_codecs_audio_in[] = { TC_CODEC_PCM, TC_CODEC_ERROR }; static const TCCodecID lowpass_codecs_audio_out[] = { TC_CODEC_PCM, TC_CODEC_ERROR }; TC_MODULE_VIDEO_UNSUPPORTED(lowpass); TC_MODULE_FILTER_FORMATS(lowpass); TC_MODULE_INFO(lowpass); static const TCModuleClass lowpass_class = { TC_MODULE_CLASS_HEAD(lowpass), .init = lowpass_init, .fini = lowpass_fini, .configure = lowpass_configure, .stop = lowpass_stop, .inspect = lowpass_inspect, .filter_audio = lowpass_filter_audio, }; TC_MODULE_ENTRY_POINT(lowpass) /*************************************************************************/ static int lowpass_get_config(TCModuleInstance *self, char *options)