• 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::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