FFmpeg
Loading...
Searching...
No Matches
alldevices.c
Go to the documentation of this file.
1/*
2 * Register all the grabbing devices.
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
24#include "libavformat/demux.h"
25#include "libavformat/mux.h"
26#include "avdevice.h"
27
29/* devices */
31extern const FFOutputFormat ff_alsa_muxer;
35extern const FFOutputFormat ff_caca_muxer;
47extern const FFInputFormat ff_oss_demuxer;
48extern const FFOutputFormat ff_oss_muxer;
54extern const FFOutputFormat ff_v4l2_muxer;
57extern const FFOutputFormat ff_xv_muxer;
58
59/* external libraries */
63
64#include "libavdevice/outdev_list.c"
65#include "libavdevice/indev_list.c"
66
68{
69 avpriv_register_devices(outdev_list, indev_list);
70}
71
72static av_cold const void *next_input(const AVInputFormat *prev, AVClassCategory c2)
73{
74 const AVClass *pc;
77 const FFInputFormat *fmt = NULL;
78 int i = 0;
79
80 while (prev && (fmt = indev_list[i])) {
81 i++;
82 if (prev == &fmt->p)
83 break;
84 }
85
86 do {
87 fmt = indev_list[i++];
88 if (!fmt)
89 break;
90 pc = fmt->p.priv_class;
91 if (!pc)
92 continue;
93 category = pc->category;
94 } while (category != c1 && category != c2);
95 return fmt;
96}
97
98static av_cold const void *next_output(const AVOutputFormat *prev, AVClassCategory c2)
99{
100 const AVClass *pc;
103 const FFOutputFormat *fmt = NULL;
104 int i = 0;
105
106 while (prev && (fmt = outdev_list[i])) {
107 i++;
108 if (prev == &fmt->p)
109 break;
110 }
111
112 do {
113 fmt = outdev_list[i++];
114 if (!fmt)
115 break;
116 pc = fmt->p.priv_class;
117 if (!pc)
118 continue;
119 category = pc->category;
120 } while (category != c1 && category != c2);
121 return fmt;
122}
123
128
133
138
const FFOutputFormat ff_xv_muxer
Definition xv.c:381
const FFInputFormat ff_fbdev_demuxer
Definition fbdev_dec.c:236
const FFInputFormat ff_openal_demuxer
Definition openal-dec.c:252
const FFInputFormat ff_pulse_demuxer
const FFOutputFormat ff_caca_muxer
Definition caca.c:225
const FFInputFormat ff_gdigrab_demuxer
gdi grabber device demuxer declaration
Definition gdigrab.c:709
const FFInputFormat ff_kmsgrab_demuxer
Definition kmsgrab.c:713
const FFOutputFormat ff_v4l2_muxer
Definition v4l2enc.c:115
const FFInputFormat ff_libcdio_demuxer
Definition libcdio.c:183
const FFInputFormat ff_android_camera_demuxer
const FFInputFormat ff_xcbgrab_demuxer
Definition xcbgrab.c:908
const FFInputFormat ff_v4l2_demuxer
Definition v4l2.c:1181
const FFOutputFormat ff_fbdev_muxer
Definition fbdev_enc.c:210
const FFInputFormat ff_jack_demuxer
Definition jack.c:344
const FFInputFormat ff_avfoundation_demuxer
const FFOutputFormat ff_oss_muxer
Definition oss_enc.c:98
const FFInputFormat ff_iec61883_demuxer
Definition iec61883.c:507
const FFInputFormat ff_dshow_demuxer
Definition dshow.c:1931
const FFInputFormat ff_vfwcap_demuxer
Definition vfwcap.c:487
FF_VISIBILITY_PUSH_HIDDEN const FFInputFormat ff_alsa_demuxer
Definition alsa_dec.c:165
const FFInputFormat ff_lavfi_demuxer
Definition lavfi.c:490
static av_cold const void * next_input(const AVInputFormat *prev, AVClassCategory c2)
Definition alldevices.c:72
static av_cold const void * next_output(const AVOutputFormat *prev, AVClassCategory c2)
Definition alldevices.c:98
const FFInputFormat ff_oss_demuxer
Definition oss_dec.c:134
const FFOutputFormat ff_pulse_muxer
const FFInputFormat ff_sndio_demuxer
Definition sndio_dec.c:113
const FFInputFormat ff_decklink_demuxer
const FFOutputFormat ff_audiotoolbox_muxer
const FFOutputFormat ff_decklink_muxer
const FFOutputFormat ff_sndio_muxer
Definition sndio_enc.c:90
const FFOutputFormat ff_alsa_muxer
Definition alsa_enc.c:162
const FFInputFormat ff_libdc1394_demuxer
Definition libdc1394.c:292
void avpriv_register_devices(const FFOutputFormat *const o[], const FFInputFormat *const i[])
Definition allformats.c:639
#define FF_VISIBILITY_PUSH_HIDDEN
#define FF_VISIBILITY_POP_HIDDEN
Main libavdevice API header.
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define NULL
Definition coverity.c:32
av_cold const AVOutputFormat * av_output_video_device_next(const AVOutputFormat *d)
Video output devices iterator.
Definition alldevices.c:139
av_cold const AVOutputFormat * av_output_audio_device_next(const AVOutputFormat *d)
Audio output devices iterator.
Definition alldevices.c:134
FF_VISIBILITY_POP_HIDDEN av_cold void avdevice_register_all(void)
Initialize libavdevice and register all the input and output devices.
Definition alldevices.c:67
av_cold const AVInputFormat * av_input_video_device_next(const AVInputFormat *d)
Video input devices iterator.
Definition alldevices.c:129
av_cold const AVInputFormat * av_input_audio_device_next(const AVInputFormat *d)
Audio input devices iterator.
Definition alldevices.c:124
Macro definitions for various function/variable attributes.
#define av_cold
Definition attributes.h:117
AVClassCategory
Definition log.h:28
@ AV_CLASS_CATEGORY_DEVICE_OUTPUT
Definition log.h:45
@ AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT
Definition log.h:43
@ AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT
Definition log.h:41
@ AV_CLASS_CATEGORY_NA
Definition log.h:29
@ AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT
Definition log.h:42
@ AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT
Definition log.h:44
@ AV_CLASS_CATEGORY_DEVICE_INPUT
Definition log.h:46
static const uint64_t c2
Definition murmur3.c:53
static const uint64_t c1
Definition murmur3.c:52
category
Definition openal-dec.c:249
Describe the class of an AVClass context structure.
Definition log.h:76
AVClassCategory category
Category used for visualization (like color).
Definition log.h:133
const AVClass * priv_class
AVClass for the private context.
Definition avformat.h:596
const AVClass * priv_class
AVClass for the private context.
Definition avformat.h:555
AVInputFormat p
The public AVInputFormat.
Definition demux.h:70
AVOutputFormat p
The public AVOutputFormat.
Definition mux.h:65