• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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