• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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::vp9::parser::Header;
14 use crate::codec::vp9::parser::MAX_SEGMENTS;
15 use crate::codec::vp9::parser::NUM_REF_FRAMES;
16 use crate::decoder::stateless::vp9::Segmentation;
17 use crate::decoder::stateless::vp9::StatelessVp9DecoderBackend;
18 use crate::decoder::stateless::vp9::Vp9;
19 use crate::decoder::stateless::NewPictureResult;
20 use crate::decoder::stateless::NewStatelessDecoderError;
21 use crate::decoder::stateless::StatelessBackendResult;
22 use crate::decoder::stateless::StatelessDecoder;
23 use crate::decoder::BlockingMode;
24 
25 impl StatelessVp9DecoderBackend for Backend {
new_sequence(&mut self, _: &Header) -> StatelessBackendResult<()>26     fn new_sequence(&mut self, _: &Header) -> StatelessBackendResult<()> {
27         Ok(())
28     }
29 
new_picture(&mut self, _: u64) -> NewPictureResult<Self::Picture>30     fn new_picture(&mut self, _: u64) -> NewPictureResult<Self::Picture> {
31         Ok(())
32     }
33 
submit_picture( &mut self, _: Self::Picture, _: &Header, _: &[Option<Self::Handle>; NUM_REF_FRAMES], _: &[u8], _: &[Segmentation; MAX_SEGMENTS], ) -> StatelessBackendResult<Self::Handle>34     fn submit_picture(
35         &mut self,
36         _: Self::Picture,
37         _: &Header,
38         _: &[Option<Self::Handle>; NUM_REF_FRAMES],
39         _: &[u8],
40         _: &[Segmentation; MAX_SEGMENTS],
41     ) -> StatelessBackendResult<Self::Handle> {
42         Ok(Handle { handle: Rc::new(RefCell::new(Default::default())) })
43     }
44 }
45 
46 impl StatelessDecoder<Vp9, Backend> {
47     // Creates a new instance of the decoder using the dummy backend.
new_dummy(blocking_mode: BlockingMode) -> Result<Self, NewStatelessDecoderError>48     pub fn new_dummy(blocking_mode: BlockingMode) -> Result<Self, NewStatelessDecoderError> {
49         Self::new(Backend::new(), blocking_mode)
50     }
51 }
52