1 // Copyright 2023 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 14 use crate::decoder::stateless::av1::Av1; 15 use crate::decoder::stateless::av1::StatelessAV1DecoderBackend; 16 use crate::decoder::stateless::NewStatelessDecoderError; 17 use crate::decoder::stateless::StatelessDecoder; 18 use crate::decoder::BlockingMode; 19 20 impl StatelessAV1DecoderBackend for Backend { new_sequence( &mut self, _: &std::rc::Rc<crate::codec::av1::parser::SequenceHeaderObu>, _: Option<u32>, ) -> crate::decoder::stateless::StatelessBackendResult<()>21 fn new_sequence( 22 &mut self, 23 _: &std::rc::Rc<crate::codec::av1::parser::SequenceHeaderObu>, 24 _: Option<u32>, 25 ) -> crate::decoder::stateless::StatelessBackendResult<()> { 26 Ok(()) 27 } 28 new_picture( &mut self, _: &crate::codec::av1::parser::FrameHeaderObu, _: u64, _: Option<u32>, ) -> crate::decoder::stateless::NewPictureResult<Self::Picture>29 fn new_picture( 30 &mut self, 31 _: &crate::codec::av1::parser::FrameHeaderObu, 32 _: u64, 33 _: Option<u32>, 34 ) -> crate::decoder::stateless::NewPictureResult<Self::Picture> { 35 Ok(()) 36 } 37 begin_picture( &mut self, _: &mut Self::Picture, _: &crate::codec::av1::parser::SequenceHeaderObu, _: &crate::codec::av1::parser::FrameHeaderObu, _: &[Option<Self::Handle>; crate::codec::av1::parser::NUM_REF_FRAMES], ) -> crate::decoder::stateless::StatelessBackendResult<()>38 fn begin_picture( 39 &mut self, 40 _: &mut Self::Picture, 41 _: &crate::codec::av1::parser::SequenceHeaderObu, 42 _: &crate::codec::av1::parser::FrameHeaderObu, 43 _: &[Option<Self::Handle>; crate::codec::av1::parser::NUM_REF_FRAMES], 44 ) -> crate::decoder::stateless::StatelessBackendResult<()> { 45 Ok(()) 46 } 47 decode_tile_group( &mut self, _: &mut Self::Picture, _: crate::codec::av1::parser::TileGroupObu, ) -> crate::decoder::stateless::StatelessBackendResult<()>48 fn decode_tile_group( 49 &mut self, 50 _: &mut Self::Picture, 51 _: crate::codec::av1::parser::TileGroupObu, 52 ) -> crate::decoder::stateless::StatelessBackendResult<()> { 53 Ok(()) 54 } 55 submit_picture( &mut self, _: Self::Picture, ) -> crate::decoder::stateless::StatelessBackendResult<Self::Handle>56 fn submit_picture( 57 &mut self, 58 _: Self::Picture, 59 ) -> crate::decoder::stateless::StatelessBackendResult<Self::Handle> { 60 Ok(Handle { handle: Rc::new(RefCell::new(Default::default())) }) 61 } 62 } 63 64 impl StatelessDecoder<Av1, Backend> { 65 // Creates a new instance of the decoder using the dummy backend. new_dummy(blocking_mode: BlockingMode) -> Result<Self, NewStatelessDecoderError>66 pub fn new_dummy(blocking_mode: BlockingMode) -> Result<Self, NewStatelessDecoderError> { 67 Self::new(Backend::new(), blocking_mode) 68 } 69 } 70