1 // Copyright 2022 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // This file contains a dummy backend whose only purpose is to let the decoder 6 // run so we can test it in isolation. 7 8 use std::cell::RefCell; 9 use std::rc::Rc; 10 11 use crate::backend::dummy::decoder::Backend; 12 use crate::backend::dummy::decoder::Handle; 13 use crate::codec::vp8::parser::Header; 14 use crate::codec::vp8::parser::MbLfAdjustments; 15 use crate::codec::vp8::parser::Segmentation; 16 use crate::decoder::stateless::vp8::StatelessVp8DecoderBackend; 17 use crate::decoder::stateless::vp8::Vp8; 18 use crate::decoder::stateless::NewPictureResult; 19 use crate::decoder::stateless::NewStatelessDecoderError; 20 use crate::decoder::stateless::StatelessBackendResult; 21 use crate::decoder::stateless::StatelessDecoder; 22 use crate::decoder::BlockingMode; 23 24 impl StatelessVp8DecoderBackend for Backend { new_sequence(&mut self, _: &Header) -> StatelessBackendResult<()>25 fn new_sequence(&mut self, _: &Header) -> StatelessBackendResult<()> { 26 Ok(()) 27 } 28 new_picture(&mut self, _: u64) -> NewPictureResult<Self::Picture>29 fn new_picture(&mut self, _: u64) -> NewPictureResult<Self::Picture> { 30 Ok(()) 31 } 32 submit_picture( &mut self, _: Self::Picture, _: &Header, _: &Option<Self::Handle>, _: &Option<Self::Handle>, _: &Option<Self::Handle>, _: &[u8], _: &Segmentation, _: &MbLfAdjustments, ) -> StatelessBackendResult<Self::Handle>33 fn submit_picture( 34 &mut self, 35 _: Self::Picture, 36 _: &Header, 37 _: &Option<Self::Handle>, 38 _: &Option<Self::Handle>, 39 _: &Option<Self::Handle>, 40 _: &[u8], 41 _: &Segmentation, 42 _: &MbLfAdjustments, 43 ) -> StatelessBackendResult<Self::Handle> { 44 Ok(Handle { handle: Rc::new(RefCell::new(Default::default())) }) 45 } 46 } 47 48 impl StatelessDecoder<Vp8, Backend> { 49 // Creates a new instance of the decoder using the dummy backend. new_dummy(blocking_mode: BlockingMode) -> Result<Self, NewStatelessDecoderError>50 pub fn new_dummy(blocking_mode: BlockingMode) -> Result<Self, NewStatelessDecoderError> { 51 Self::new(Backend::new(), blocking_mode) 52 } 53 } 54