summaryrefslogtreecommitdiff
path: root/amvdec/amvideo.c (plain)
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
20amvideo_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}
33int amvideo_setparameters(amvideo_dev_t *dev, int cmd, void * parameters)
34{
35 return 0;
36}
37int 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}
46int amvideo_start(amvideo_dev_t *dev)
47{
48 if (dev->ops.start) {
49 return dev->ops.start(dev);
50 }
51 return 0;
52}
53int amvideo_stop(amvideo_dev_t *dev)
54{
55 if (dev->ops.stop) {
56 return dev->ops.stop(dev);
57 }
58 return 0;
59}
60int amvideo_release(amvideo_dev_t *dev)
61{
62 if (dev->mode == FLAGS_V4L_MODE) {
63 amlv4l_release(dev);
64 }
65 return 0;
66}
67int 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}
74int 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