1 // Copyright 2020 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 //! Integration tests using LibVDA fake decode implemenation.
6
7 use libvda::decode::*;
8 use libvda::*;
9
create_vda_instance() -> VdaInstance10 fn create_vda_instance() -> VdaInstance {
11 VdaInstance::new(VdaImplType::Fake).expect("failed to create VDAInstance")
12 }
13
14 #[test]
test_create_instance()15 fn test_create_instance() {
16 let instance = create_vda_instance();
17 let caps = instance.get_capabilities();
18
19 assert_ne!(caps.input_formats.len(), 0);
20 assert_ne!(caps.output_formats.len(), 0);
21 }
22
23 #[test]
test_initialize_decode_session()24 fn test_initialize_decode_session() {
25 let instance = create_vda_instance();
26 let _session = instance
27 .open_session(Profile::VP8)
28 .expect("failed to open a session for VP8");
29 }
30
31 #[test]
test_decode_and_get_picture_ready_fake()32 fn test_decode_and_get_picture_ready_fake() {
33 let instance = create_vda_instance();
34 let mut session = instance
35 .open_session(Profile::VP8)
36 .expect("failed to open a session");
37
38 // Call decode() with dummy arguments.
39 let fake_bitstream_id = 12345;
40 session
41 .decode(
42 fake_bitstream_id,
43 1, // fd
44 0, // offset
45 0, // bytes_used
46 )
47 .expect("failed to send a decode request");
48
49 // Since we are using the fake backend,
50 // we must get a event immediately after calling decode().
51 match session.read_event() {
52 Ok(Event::PictureReady { bitstream_id, .. }) => {
53 assert_eq!(bitstream_id, fake_bitstream_id);
54 }
55 Ok(event) => panic!("Obtained event is not PictureReady but {:?}", event),
56 Err(msg) => panic!("{}", msg),
57 }
58 }
59