blob: 495227ea57e6f6cc43c42766949b44186b6a5965
1 | /* |
2 | * Copyright (c) 2014 Amlogic, Inc. All rights reserved. |
3 | * |
4 | * This source code is subject to the terms and conditions defined in the |
5 | * file 'LICENSE' which is part of this source code package. |
6 | * |
7 | * Description: |
8 | */ |
9 | |
10 | |
11 | #include <sys/types.h> |
12 | #include <sys/stat.h> |
13 | #include <fcntl.h> |
14 | #include <amvideo.h> |
15 | #include <Amavutils.h> |
16 | #include "amvdec_priv.h" |
17 | #include "amlv4l.h" |
18 | |
19 | |
20 | amvideo_dev_t *new_amvideo(int flags) |
21 | { |
22 | amvideo_dev_t *dev = NULL; |
23 | if (flags & FLAGS_V4L_MODE) { |
24 | dev = new_amlv4l(); |
25 | if (!dev) { |
26 | LOGE("alloc v4l devices failed.\n"); |
27 | } else { |
28 | dev->mode = FLAGS_V4L_MODE; |
29 | } |
30 | } |
31 | return dev; |
32 | } |
33 | int amvideo_setparameters(amvideo_dev_t *dev, int cmd, void * parameters) |
34 | { |
35 | return 0; |
36 | } |
37 | int amvideo_init(amvideo_dev_t *dev, int flags, int width, int height, int fmt) |
38 | { |
39 | int ret = -1; |
40 | if (dev->ops.init) { |
41 | ret = dev->ops.init(dev, O_RDWR | O_NONBLOCK, width, height, fmt); |
42 | LOGE("amvideo_init ret=%d\n", ret); |
43 | } |
44 | return ret; |
45 | } |
46 | int amvideo_start(amvideo_dev_t *dev) |
47 | { |
48 | if (dev->ops.start) { |
49 | return dev->ops.start(dev); |
50 | } |
51 | return 0; |
52 | } |
53 | int amvideo_stop(amvideo_dev_t *dev) |
54 | { |
55 | if (dev->ops.stop) { |
56 | return dev->ops.stop(dev); |
57 | } |
58 | return 0; |
59 | } |
60 | int amvideo_release(amvideo_dev_t *dev) |
61 | { |
62 | if (dev->mode == FLAGS_V4L_MODE) { |
63 | amlv4l_release(dev); |
64 | } |
65 | return 0; |
66 | } |
67 | int amlv4l_dequeuebuf(amvideo_dev_t *dev, vframebuf_t*vf) |
68 | { |
69 | if (dev->ops.dequeuebuf) { |
70 | return dev->ops.dequeuebuf(dev, vf); |
71 | } |
72 | return -1; |
73 | } |
74 | int amlv4l_queuebuf(amvideo_dev_t *dev, vframebuf_t*vf) |
75 | { |
76 | if (dev->ops.queuebuf) { |
77 | return dev->ops.queuebuf(dev, vf); |
78 | } |
79 | return 0; |
80 | } |
81 |