From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id BBFE84D731 for ; Sun, 23 Feb 2025 22:09:25 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A2DE868CA9B; Mon, 24 Feb 2025 00:07:09 +0200 (EET) Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA39168CA37 for ; Mon, 24 Feb 2025 00:07:03 +0200 (EET) Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-2f9b91dff71so5692561a91.2 for ; Sun, 23 Feb 2025 14:07:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740348421; x=1740953221; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=JuZr69wLsiEXM7gvWiT0uNwIChKiUGiLij+Y8VC8lZM=; b=CTozskNi605m+7HiaBcNez82DXkQ2KDStcviC7oMdBEy688OSeVNKLVDIF8Mvnv/e6 OT64S2FHljTL/L0Aid+adUh+UOspSBC3VXZy/6yUkeLNFzGef2WwZhCzhgcjm1KNbJ89 GZChKBYg2ebVFiPFljwG3pFe7mgKjgu/zQc2B8HDoVyNDLJqWy8Tecn5peiJfNIwFOhe VW5F5wsgvhxqbeleOY9wsZU+blYXEVk0TgpxygvBs1WoyU/RvQ8rsACgJaESpNErow9Q p0JQ/pRvGldGw/fITCiPx37hh4uLJy8ZRdSumceLrHWbzh+nzrBbMnrkdz1/cySb2UGE fA1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740348421; x=1740953221; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JuZr69wLsiEXM7gvWiT0uNwIChKiUGiLij+Y8VC8lZM=; b=r/DvuKkN+WbhdTJjopmlwMfdRqJkrcmqzr7+S55G9TJ78m1B94VehwaNBpbKk3jlSK +hoofdf7LZ9+nKkZK70UDak4sJNyeCkgiqt3tXTTA9aOeRIQMBlMlvDKyw1e3+gqnR1R QTV9MuK6NJkvIKfEIr4b1cacnLuXID5/D1/SRb43cLhgW2SjicQJDsKcIiOJ7ueeWAFa Oez9zUAD1553eKoGl2NIBMWyt35soMD3SYQRrbI6U5diEnH3lPFwZehl8ufM/Vt9+1/U P1AMBhimlVF775rrYo/1klD4doJQWutYSmsnquTfoHHaHQcGmNE/nNo9MVqnrr1BEN+I YBsQ== X-Gm-Message-State: AOJu0YwWDvjPTk+rTfPhYi1O9dZkNw2nMhjREecGnOdxT+cprGnTojw7 bUy4VHl+2MYNllLxEpe39oC+J6wdhzNUBF48VgHA3FBPLNE16KNv1pSXOAjT X-Gm-Gg: ASbGncsB9X0VfnBIvbkmBaz3S4JpIFvde0787oCpfCJhaXT84zEzW34HfmPjLkmgqSp 62RIrBb9kVQP5P5aK/u3vRL6DfJSmOeiczT+Wq4BDa5AuqgrRn2+0UiBOfMPCJ/pcgu/FBN2z+D cTbavLyivrM7+uHbDi4WAlNEFYk78LaMhm9g1sJDh9u3q1bVlzOqlPn1JTr/Ri/UvR62VH8FgVc 5YpfAYEeGFIL8hd53K3wQacNw9rM/Xh0Ohz+VxYyCseOlTz1PzDXBVtNe2Ch8CJMkre1JpwM3r+ oLdbhqs8g35qx7OMefKrVs0YyavG5RsPHeIB8E2Xgg== X-Google-Smtp-Source: AGHT+IFjJzbVsruv1COjjQArnOESmy+ydD0bEBj6TuliNUvWur7p6k7AqOYae2Ko9nJyP2gwyPqg1w== X-Received: by 2002:a17:90b:3d84:b0:2fa:15ab:4dff with SMTP id 98e67ed59e1d1-2fce7b35d13mr17637829a91.31.1740348421001; Sun, 23 Feb 2025 14:07:01 -0800 (PST) Received: from localhost.localdomain ([2800:2121:b040:c:b49d:85a5:a7d1:4da6]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fceb04bf70sm5091848a91.16.2025.02.23.14.06.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 14:06:59 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 23 Feb 2025 19:06:13 -0300 Message-ID: <20250223220630.18756-14-jamrial@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250223220630.18756-1-jamrial@gmail.com> References: <20250223220630.18756-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/30] avdevice: remove deprecated FF_API_SDL2_DEVICE X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Deprecated since 2024-02-28. Signed-off-by: James Almer --- configure | 5 - libavdevice/Makefile | 1 - libavdevice/alldevices.c | 1 - libavdevice/sdl2.c | 377 ------------------------------------ libavdevice/version_major.h | 2 - 5 files changed, 386 deletions(-) delete mode 100644 libavdevice/sdl2.c diff --git a/configure b/configure index 9a003aa453..9247face79 100755 --- a/configure +++ b/configure @@ -3764,7 +3764,6 @@ oss_indev_deps_any="sys_soundcard_h" oss_outdev_deps_any="sys_soundcard_h" pulse_indev_deps="libpulse" pulse_outdev_deps="libpulse" -sdl2_outdev_deps="sdl2" sndio_indev_deps="sndio" sndio_outdev_deps="sndio" v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" @@ -7859,10 +7858,6 @@ enabled zoompan_filter && prepend avfilter_deps "swscale" enabled lavfi_indev && prepend avdevice_deps "avfilter" -#FIXME -enabled_any sdl2_outdev && enabled sdl2 && - add_cflags $(filter_out '-Dmain=SDL_main' $sdl2_cflags) - enabled opus_decoder && prepend avcodec_deps "swresample" # reorder the items at var $1 to align with the items order at var $2 . diff --git a/libavdevice/Makefile b/libavdevice/Makefile index d09bfb95f9..a226368d16 100644 --- a/libavdevice/Makefile +++ b/libavdevice/Makefile @@ -40,7 +40,6 @@ OBJS-$(CONFIG_PULSE_INDEV) += pulse_audio_dec.o \ pulse_audio_common.o timefilter.o OBJS-$(CONFIG_PULSE_OUTDEV) += pulse_audio_enc.o \ pulse_audio_common.o -OBJS-$(CONFIG_SDL2_OUTDEV) += sdl2.o OBJS-$(CONFIG_SNDIO_INDEV) += sndio_dec.o sndio.o OBJS-$(CONFIG_SNDIO_OUTDEV) += sndio_enc.o sndio.o OBJS-$(CONFIG_V4L2_INDEV) += v4l2.o v4l2-common.o timefilter.o diff --git a/libavdevice/alldevices.c b/libavdevice/alldevices.c index c2e525b7b9..573595f416 100644 --- a/libavdevice/alldevices.c +++ b/libavdevice/alldevices.c @@ -48,7 +48,6 @@ extern const FFInputFormat ff_oss_demuxer; extern const FFOutputFormat ff_oss_muxer; extern const FFInputFormat ff_pulse_demuxer; extern const FFOutputFormat ff_pulse_muxer; -extern const FFOutputFormat ff_sdl2_muxer; extern const FFInputFormat ff_sndio_demuxer; extern const FFOutputFormat ff_sndio_muxer; extern const FFInputFormat ff_v4l2_demuxer; diff --git a/libavdevice/sdl2.c b/libavdevice/sdl2.c deleted file mode 100644 index 491c8dafe8..0000000000 --- a/libavdevice/sdl2.c +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Copyright (c) 2016 Josh de Kock - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * libSDL2 output device - */ - -#include -#include - -#include "libavutil/imgutils.h" -#include "libavutil/mem.h" -#include "libavutil/opt.h" -#include "libavutil/pixdesc.h" -#include "libavformat/mux.h" - -typedef struct { - AVClass *class; - SDL_Window *window; - SDL_Renderer *renderer; - char *window_title; - int window_width, window_height; /**< size of the window */ - int window_x, window_y; /**< position of the window */ - int window_fullscreen; - int window_borderless; - int enable_quit_action; - - SDL_Texture *texture; - int texture_fmt; - SDL_Rect texture_rect; - - int inited; - int warned; -} SDLContext; - -static const struct sdl_texture_format_entry { - enum AVPixelFormat format; int texture_fmt; -} sdl_texture_format_map[] = { - /* - * Not implemented in FFmpeg, but leaving here for completeness. - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_ARGB4444 }, - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_RGBA4444 }, - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_ABGR4444 }, - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_BGRA4444 }, - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_ARGB1555 }, - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_RGBA5551 }, - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_ABGR1555 }, - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_BGRA5551 }, - * { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_ARGB2101010 }, - */ - { AV_PIX_FMT_RGB8, SDL_PIXELFORMAT_RGB332 }, - { AV_PIX_FMT_RGB444, SDL_PIXELFORMAT_RGB444 }, - { AV_PIX_FMT_RGB555, SDL_PIXELFORMAT_RGB555 }, - { AV_PIX_FMT_BGR555, SDL_PIXELFORMAT_BGR555 }, - { AV_PIX_FMT_RGB565, SDL_PIXELFORMAT_RGB565 }, - { AV_PIX_FMT_BGR565, SDL_PIXELFORMAT_BGR565 }, - { AV_PIX_FMT_RGB24, SDL_PIXELFORMAT_RGB24 }, - { AV_PIX_FMT_BGR24, SDL_PIXELFORMAT_BGR24 }, - { AV_PIX_FMT_0RGB32, SDL_PIXELFORMAT_RGB888 }, - { AV_PIX_FMT_0BGR32, SDL_PIXELFORMAT_BGR888 }, -#if HAVE_BIGENDIAN - { AV_PIX_FMT_RGB0, SDL_PIXELFORMAT_RGBX8888 }, - { AV_PIX_FMT_BGR0, SDL_PIXELFORMAT_BGRX8888 }, -#else - { AV_PIX_FMT_0BGR, SDL_PIXELFORMAT_RGBX8888 }, - { AV_PIX_FMT_0RGB, SDL_PIXELFORMAT_BGRX8888 }, -#endif - { AV_PIX_FMT_RGB32, SDL_PIXELFORMAT_ARGB8888 }, - { AV_PIX_FMT_RGB32_1, SDL_PIXELFORMAT_RGBA8888 }, - { AV_PIX_FMT_BGR32, SDL_PIXELFORMAT_ABGR8888 }, - { AV_PIX_FMT_BGR32_1, SDL_PIXELFORMAT_BGRA8888 }, - { AV_PIX_FMT_YUV420P, SDL_PIXELFORMAT_IYUV }, - { AV_PIX_FMT_YUYV422, SDL_PIXELFORMAT_YUY2 }, - { AV_PIX_FMT_UYVY422, SDL_PIXELFORMAT_UYVY }, - { AV_PIX_FMT_NONE, 0 }, -}; - -static void compute_texture_rect(AVFormatContext *s) -{ - AVRational sar, dar; /* sample and display aspect ratios */ - SDLContext *sdl = s->priv_data; - AVStream *st = s->streams[0]; - AVCodecParameters *codecpar = st->codecpar; - SDL_Rect *texture_rect = &sdl->texture_rect; - - /* compute texture width and height from the codec context information */ - sar = st->sample_aspect_ratio.num ? st->sample_aspect_ratio : (AVRational){ 1, 1 }; - dar = av_mul_q(sar, (AVRational){ codecpar->width, codecpar->height }); - - /* we suppose the screen has a 1/1 sample aspect ratio */ - if (sdl->window_width && sdl->window_height) { - /* fit in the window */ - if (av_cmp_q(dar, (AVRational){ sdl->window_width, sdl->window_height }) > 0) { - /* fit in width */ - texture_rect->w = sdl->window_width; - texture_rect->h = av_rescale(texture_rect->w, dar.den, dar.num); - } else { - /* fit in height */ - texture_rect->h = sdl->window_height; - texture_rect->w = av_rescale(texture_rect->h, dar.num, dar.den); - } - } else { - if (sar.num > sar.den) { - texture_rect->w = codecpar->width; - texture_rect->h = av_rescale(texture_rect->w, dar.den, dar.num); - } else { - texture_rect->h = codecpar->height; - texture_rect->w = av_rescale(texture_rect->h, dar.num, dar.den); - } - sdl->window_width = texture_rect->w; - sdl->window_height = texture_rect->h; - } - - texture_rect->x = (sdl->window_width - texture_rect->w) / 2; - texture_rect->y = (sdl->window_height - texture_rect->h) / 2; -} - -static int sdl2_write_trailer(AVFormatContext *s) -{ - SDLContext *sdl = s->priv_data; - - if (sdl->texture) - SDL_DestroyTexture(sdl->texture); - sdl->texture = NULL; - - if (sdl->renderer) - SDL_DestroyRenderer(sdl->renderer); - sdl->renderer = NULL; - - if (sdl->window) - SDL_DestroyWindow(sdl->window); - sdl->window = NULL; - - if (!sdl->inited) - SDL_Quit(); - - return 0; -} - -static int sdl2_write_header(AVFormatContext *s) -{ - SDLContext *sdl = s->priv_data; - AVStream *st = s->streams[0]; - AVCodecParameters *codecpar = st->codecpar; - int i, ret = 0; - int flags = 0; - - if (!sdl->warned) { - av_log(sdl, AV_LOG_WARNING, - "The sdl output device is deprecated due to being fundamentally incompatible with libavformat API. " - "For monitoring purposes in ffmpeg you can output to a file or use pipes and a video player.\n" - "Example: ffmpeg -i INPUT -f nut -c:v rawvideo - | ffplay -loglevel warning -vf setpts=0 -\n" - ); - sdl->warned = 1; - } - - if (!sdl->window_title) - sdl->window_title = av_strdup(s->url); - - if (SDL_WasInit(SDL_INIT_VIDEO)) { - av_log(s, AV_LOG_WARNING, - "SDL video subsystem was already inited, you could have multiple SDL outputs. This may cause unknown behaviour.\n"); - sdl->inited = 1; - } - - if ( s->nb_streams > 1 - || codecpar->codec_type != AVMEDIA_TYPE_VIDEO - || codecpar->codec_id != AV_CODEC_ID_RAWVIDEO) { - av_log(s, AV_LOG_ERROR, "Only supports one rawvideo stream\n"); - goto fail; - } - - for (i = 0; sdl_texture_format_map[i].format != AV_PIX_FMT_NONE; i++) { - if (sdl_texture_format_map[i].format == codecpar->format) { - sdl->texture_fmt = sdl_texture_format_map[i].texture_fmt; - break; - } - } - - if (!sdl->texture_fmt) { - av_log(s, AV_LOG_ERROR, - "Unsupported pixel format '%s'.\n", - av_get_pix_fmt_name(codecpar->format)); - goto fail; - } - - /* resize texture to width and height from the codec context information */ - flags = SDL_WINDOW_HIDDEN | - (sdl->window_fullscreen ? SDL_WINDOW_FULLSCREEN : 0) | - (sdl->window_borderless ? SDL_WINDOW_BORDERLESS : SDL_WINDOW_RESIZABLE); - - /* initialization */ - if (!sdl->inited){ - if (SDL_Init(SDL_INIT_VIDEO) != 0) { - av_log(s, AV_LOG_ERROR, "Unable to initialize SDL: %s\n", SDL_GetError()); - goto fail; - } - } - - compute_texture_rect(s); - - if (SDL_CreateWindowAndRenderer(sdl->window_width, sdl->window_height, - flags, &sdl->window, &sdl->renderer) != 0){ - av_log(sdl, AV_LOG_ERROR, "Couldn't create window and renderer: %s\n", SDL_GetError()); - goto fail; - } - - SDL_SetWindowTitle(sdl->window, sdl->window_title); - SDL_SetWindowPosition(sdl->window, sdl->window_x, sdl->window_y); - SDL_ShowWindow(sdl->window); - - sdl->texture = SDL_CreateTexture(sdl->renderer, sdl->texture_fmt, SDL_TEXTUREACCESS_STREAMING, - codecpar->width, codecpar->height); - - if (!sdl->texture) { - av_log(sdl, AV_LOG_ERROR, "Unable to set create mode: %s\n", SDL_GetError()); - goto fail; - } - - av_log(s, AV_LOG_VERBOSE, "w:%d h:%d fmt:%s -> w:%d h:%d\n", - codecpar->width, codecpar->height, av_get_pix_fmt_name(codecpar->format), - sdl->window_width, sdl->window_height); - - sdl->inited = 1; - - return 0; -fail: - sdl2_write_trailer(s); - return ret; -} - -static int sdl2_write_packet(AVFormatContext *s, AVPacket *pkt) -{ - int ret, quit = 0; - SDLContext *sdl = s->priv_data; - AVCodecParameters *codecpar = s->streams[0]->codecpar; - uint8_t *data[4]; - int linesize[4]; - - SDL_Event event; - if (SDL_PollEvent(&event)){ - switch (event.type) { - case SDL_KEYDOWN: - switch (event.key.keysym.sym) { - case SDLK_ESCAPE: - case SDLK_q: - quit = 1; - break; - default: - break; - } - break; - case SDL_QUIT: - quit = 1; - break; - case SDL_WINDOWEVENT: - switch(event.window.event){ - case SDL_WINDOWEVENT_RESIZED: - case SDL_WINDOWEVENT_SIZE_CHANGED: - sdl->window_width = event.window.data1; - sdl->window_height = event.window.data2; - compute_texture_rect(s); - break; - default: - break; - } - break; - default: - break; - } - } - - if (quit && sdl->enable_quit_action) { - sdl2_write_trailer(s); - return AVERROR(EIO); - } - - av_image_fill_arrays(data, linesize, pkt->data, codecpar->format, codecpar->width, codecpar->height, 1); - switch (sdl->texture_fmt) { - /* case SDL_PIXELFORMAT_ARGB4444: - * case SDL_PIXELFORMAT_RGBA4444: - * case SDL_PIXELFORMAT_ABGR4444: - * case SDL_PIXELFORMAT_BGRA4444: - * case SDL_PIXELFORMAT_ARGB1555: - * case SDL_PIXELFORMAT_RGBA5551: - * case SDL_PIXELFORMAT_ABGR1555: - * case SDL_PIXELFORMAT_BGRA5551: - * case SDL_PIXELFORMAT_ARGB2101010: - */ - case SDL_PIXELFORMAT_IYUV: - case SDL_PIXELFORMAT_YUY2: - case SDL_PIXELFORMAT_UYVY: - ret = SDL_UpdateYUVTexture(sdl->texture, NULL, - data[0], linesize[0], - data[1], linesize[1], - data[2], linesize[2]); - break; - case SDL_PIXELFORMAT_RGB332: - case SDL_PIXELFORMAT_RGB444: - case SDL_PIXELFORMAT_RGB555: - case SDL_PIXELFORMAT_BGR555: - case SDL_PIXELFORMAT_RGB565: - case SDL_PIXELFORMAT_BGR565: - case SDL_PIXELFORMAT_RGB24: - case SDL_PIXELFORMAT_BGR24: - case SDL_PIXELFORMAT_RGB888: - case SDL_PIXELFORMAT_RGBX8888: - case SDL_PIXELFORMAT_BGR888: - case SDL_PIXELFORMAT_BGRX8888: - case SDL_PIXELFORMAT_ARGB8888: - case SDL_PIXELFORMAT_RGBA8888: - case SDL_PIXELFORMAT_ABGR8888: - case SDL_PIXELFORMAT_BGRA8888: - ret = SDL_UpdateTexture(sdl->texture, NULL, data[0], linesize[0]); - break; - default: - av_log(NULL, AV_LOG_FATAL, "Unsupported pixel format\n"); - ret = -1; - break; - } - SDL_RenderClear(sdl->renderer); - SDL_RenderCopy(sdl->renderer, sdl->texture, NULL, &sdl->texture_rect); - SDL_RenderPresent(sdl->renderer); - return ret; -} - -#define OFFSET(x) offsetof(SDLContext,x) - -static const AVOption options[] = { - { "window_title", "set SDL window title", OFFSET(window_title), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, AV_OPT_FLAG_ENCODING_PARAM }, - { "window_size", "set SDL window forced size", OFFSET(window_width), AV_OPT_TYPE_IMAGE_SIZE, { .str = NULL }, 0, 0, AV_OPT_FLAG_ENCODING_PARAM }, - { "window_x", "set SDL window x position", OFFSET(window_x), AV_OPT_TYPE_INT, { .i64 = SDL_WINDOWPOS_CENTERED }, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM }, - { "window_y", "set SDL window y position", OFFSET(window_y), AV_OPT_TYPE_INT, { .i64 = SDL_WINDOWPOS_CENTERED }, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM }, - { "window_fullscreen", "set SDL window fullscreen", OFFSET(window_fullscreen), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, - { "window_borderless", "set SDL window border off", OFFSET(window_borderless), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, - { "window_enable_quit", "set if quit action is available", OFFSET(enable_quit_action), AV_OPT_TYPE_INT, {.i64=1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM }, - { NULL }, -}; - -static const AVClass sdl2_class = { - .class_name = "sdl2 outdev", - .item_name = av_default_item_name, - .option = options, - .version = LIBAVUTIL_VERSION_INT, - .category = AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT, -}; - -const FFOutputFormat ff_sdl2_muxer = { - .p.name = "sdl,sdl2", - .p.long_name = NULL_IF_CONFIG_SMALL("SDL2 output device"), - .priv_data_size = sizeof(SDLContext), - .p.audio_codec = AV_CODEC_ID_NONE, - .p.video_codec = AV_CODEC_ID_RAWVIDEO, - .write_header = sdl2_write_header, - .write_packet = sdl2_write_packet, - .write_trailer = sdl2_write_trailer, - .p.flags = AVFMT_NOFILE | AVFMT_VARIABLE_FPS | AVFMT_NOTIMESTAMPS, - .p.priv_class = &sdl2_class, -}; diff --git a/libavdevice/version_major.h b/libavdevice/version_major.h index bbe7d8344c..6e7dd62027 100644 --- a/libavdevice/version_major.h +++ b/libavdevice/version_major.h @@ -33,8 +33,6 @@ * the public API and may change, break or disappear at any time. */ -// reminder to remove the sdl2 device on next major bump -#define FF_API_SDL2_DEVICE (LIBAVDEVICE_VERSION_MAJOR < 62) #define FF_API_ALSA_CHANNELS (LIBAVDEVICE_VERSION_MAJOR < 62) #endif /* AVDEVICE_VERSION_MAJOR_H */ -- 2.48.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".