pub trait VideoDecoderImpl: VideoDecoderImplExt + ElementImpl {
Show methods
    fn open(&self, element: &Self::Type) -> Result<(), ErrorMessage> { ... }
    fn close(&self, element: &Self::Type) -> Result<(), ErrorMessage> { ... }
    fn start(&self, element: &Self::Type) -> Result<(), ErrorMessage> { ... }
    fn stop(&self, element: &Self::Type) -> Result<(), ErrorMessage> { ... }
    fn finish(&self, element: &Self::Type) -> Result<FlowSuccess, FlowError> { ... }
    fn drain(&self, element: &Self::Type) -> Result<FlowSuccess, FlowError> { ... }
    fn set_format(
        &self, 
        element: &Self::Type, 
        state: &VideoCodecState<'static, Readable>
    ) -> Result<(), LoggableError> { ... }
    fn parse(
        &self, 
        element: &Self::Type, 
        frame: &VideoCodecFrame<'_>, 
        adapter: &Adapter, 
        at_eos: bool
    ) -> Result<FlowSuccess, FlowError> { ... }
    fn handle_frame(
        &self, 
        element: &Self::Type, 
        frame: VideoCodecFrame<'_>
    ) -> Result<FlowSuccess, FlowError> { ... }
    fn flush(&self, element: &Self::Type) -> bool { ... }
    fn negotiate(&self, element: &Self::Type) -> Result<(), LoggableError> { ... }
    fn caps(&self, element: &Self::Type, filter: Option<&Caps>) -> Caps { ... }
    fn sink_event(&self, element: &Self::Type, event: Event) -> bool { ... }
    fn sink_query(&self, element: &Self::Type, query: &mut QueryRef) -> bool { ... }
    fn src_event(&self, element: &Self::Type, event: Event) -> bool { ... }
    fn src_query(&self, element: &Self::Type, query: &mut QueryRef) -> bool { ... }
    fn propose_allocation(
        &self, 
        element: &Self::Type, 
        query: &mut QueryRef
    ) -> Result<(), ErrorMessage> { ... }
    fn decide_allocation(
        &self, 
        element: &Self::Type, 
        query: &mut QueryRef
    ) -> Result<(), ErrorMessage> { ... }
 }