- AVFilter* buffer_src = avfilter_get_by_name("buffer");
- if (buffer_src == 0) {
- throw DecodeError ("Could not find buffer src filter");
- }
-
- AVFilter* buffer_sink = get_sink ();
-
- stringstream a;
- a << native_size().width << ":"
- << native_size().height << ":"
- << pixel_format() << ":"
- << time_base_numerator() << ":"
- << time_base_denominator() << ":"
- << sample_aspect_ratio_numerator() << ":"
- << sample_aspect_ratio_denominator();
-
- int r;
-
- if ((r = avfilter_graph_create_filter (&_buffer_src_context, buffer_src, "in", a.str().c_str(), 0, graph)) < 0) {
- throw DecodeError ("could not create buffer source");
- }
-
- AVBufferSinkParams* sink_params = av_buffersink_params_alloc ();
- PixelFormat* pixel_fmts = new PixelFormat[2];
- pixel_fmts[0] = pixel_format ();
- pixel_fmts[1] = PIX_FMT_NONE;
- sink_params->pixel_fmts = pixel_fmts;
-
- if (avfilter_graph_create_filter (&_buffer_sink_context, buffer_sink, "out", 0, sink_params, graph) < 0) {
- throw DecodeError ("could not create buffer sink.");
- }
-
- AVFilterInOut* outputs = avfilter_inout_alloc ();
- outputs->name = av_strdup("in");
- outputs->filter_ctx = _buffer_src_context;
- outputs->pad_idx = 0;
- outputs->next = 0;