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 ESMTP id 2F2DD49580 for ; Fri, 12 Jul 2024 17:49:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0710568DB2C; Fri, 12 Jul 2024 20:48:21 +0300 (EEST) Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6449E68DADE for ; Fri, 12 Jul 2024 20:48:09 +0300 (EEST) Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-58bac81f419so2807075a12.0 for ; Fri, 12 Jul 2024 10:48:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720806489; x=1721411289; darn=ffmpeg.org; h=subject:date:from:to:message-id:in-reply-to:from:to:cc:subject:date :message-id:reply-to; bh=6Pg+YD3qZ9eCIiu7+XWFWVk6MRY1xKrd2VcvCzZuREQ=; b=lp/hkU2J0UG1cvfC/aDsSKbGt+40bEgTQm34KsfjPAoD/67nlgHtVnn6q4hjqPXk2g M0tIM8Y0dNRJFGGjlSSvgfZ/kIa+weBwx7yy1B81GC1uH1q1ISmNJ6+Xcxrdv05SL9Bk WAAB3HkNWEjwABkc7wEUyqjtsVYeh6mB8aiAAqAhRWUI87BsPsWraXPr9kRbK2cYVfj3 vdy9zSqW/fj/0nOLj1hte0mi9ZtNEicfZt7RscnpU/R9TlPfESU0DxXrAQoaKZ7uG+qE /Md1ZCZFUChDNhelzJ5wD5s1mM7y/Pa+RE1EYkgdkXzjV2kCSS91bG/Q0vel/r27Sldo 7Qvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720806489; x=1721411289; h=subject:date:from:to:message-id:in-reply-to:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6Pg+YD3qZ9eCIiu7+XWFWVk6MRY1xKrd2VcvCzZuREQ=; b=Gzi4EzU3VRYhYjcwjdVmTlR7YrE79GzOscszIDqTMd6hYC6j58QM0YnmEhn7Ip2qaI wIuMpfiT15j3sQPu+ZMW7w20hPmBlzSDdALlFnXCulhbSE3JCsyjRyA5tP/s3Fv8hg63 aPstQZWjmSJ9lZlBRkwr3FgWKFUtLDAWhmmmBgcoM51juJfSyXIVZQE4opL3flci79/z oQ4GLt4fdWUEC0f6mYLuK2h0J5uClgJdbZi3amQ5J8oGSacEdhHI1NgB+djVtfRd3rMj jtecVtmgPmRYUd5HHmdldcfF0/vKwfDntRwixNgj1IfxmqQqfSlmZ/zov7jAI76Ry2eD 36OA== X-Gm-Message-State: AOJu0YxehJmS1hQVQUCRF6eyDeF08tAg283t3dQi7PmLLR1w/7TK06Ms zH/Aes5cmVojcTH2ccHLSs8ZH41uNa/pCPkw3Psgvm5AZ77zUWTwwQNR9g== X-Google-Smtp-Source: AGHT+IFrZI6jI4iklCLahhiyWOQ8m+n7mgIx3MuTENedemh+v5A7vfIABdoNJG8MwysMgzHQ4s5qjQ== X-Received: by 2002:aa7:c54d:0:b0:58b:35ef:88c4 with SMTP id 4fb4d7f45d1cf-594bcab0332mr7039997a12.37.1720806488623; Fri, 12 Jul 2024 10:48:08 -0700 (PDT) Received: from localhost (p200300cccf1e25001072fbc25e6664b9.dip0.t-ipconnect.de. [2003:cc:cf1e:2500:1072:fbc2:5e66:64b9]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-594bd45a1b6sm4753150a12.60.2024.07.12.10.48.07 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 12 Jul 2024 10:48:08 -0700 (PDT) In-Reply-To: Message-Id: To: From: "Marvin Scholz" Date: Fri, 12 Jul 2024 19:13:39 +0200 Subject: [FFmpeg-devel] [PATCH 07/11] avfilter/vf_coreimage: fix mixed declaration and code 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 MIME-Version: 1.0 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: Fix several "mixing declarations and code is incompatible with standards before C99" warnings. --- libavfilter/vf_coreimage.m | 60 ++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/libavfilter/vf_coreimage.m b/libavfilter/vf_coreimage.m index 4d4cdfb7c7..bfc17764b5 100644 --- a/libavfilter/vf_coreimage.m +++ b/libavfilter/vf_coreimage.m @@ -66,6 +66,7 @@ static int config_output(AVFilterLink *link) { CoreImageContext *ctx = link->src->priv; + const AVPixFmtDescriptor *desc; link->w = ctx->w; link->h = ctx->h; @@ -73,7 +74,7 @@ static int config_output(AVFilterLink *link) link->frame_rate = ctx->frame_rate; link->time_base = ctx->time_base; - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(link->format); + desc = av_pix_fmt_desc_get(link->format); ctx->bits_per_component = av_get_bits_per_pixel(desc) / desc->nb_components; return 0; @@ -106,14 +107,13 @@ static void list_filters(CoreImageContext *ctx) NSString *filter_name; while (filter_name = [filters nextObject]) { - av_log(ctx, AV_LOG_INFO, "Filter: %s\n", [filter_name UTF8String]); - NSString *input; - CIFilter *filter = [CIFilter filterWithName:filter_name]; NSDictionary *filter_attribs = [filter attributes]; // NSArray *filter_inputs = [filter inputKeys]; // - for (input in filter_inputs) { + av_log(ctx, AV_LOG_INFO, "Filter: %s\n", [filter_name UTF8String]); + + for (NSString *input in filter_inputs) { NSDictionary *input_attribs = [filter_attribs valueForKey:input]; NSString *input_class = [input_attribs valueForKey:kCIAttributeClass]; if ([input_class isEqualToString:@"NSNumber"]) { @@ -139,6 +139,11 @@ static void list_filters(CoreImageContext *ctx) static int apply_filter(CoreImageContext *ctx, AVFilterLink *link, AVFrame *frame) { int i; + CGImageRef out; + CGRect out_rect; + CIFilter *filter = NULL; + CIImage *filter_input = (__bridge CIImage*)ctx->input_image; + CIImage *filter_output = NULL; // (re-)initialize input image const CGSize frame_size = { @@ -150,26 +155,22 @@ static int apply_filter(CoreImageContext *ctx, AVFilterLink *link, AVFrame *fram length:frame->height*frame->linesize[0] freeWhenDone:NO]; - CIImage *ret = [(__bridge CIImage*)ctx->input_image initWithBitmapData:data - bytesPerRow:frame->linesize[0] - size:frame_size - format:kCIFormatARGB8 - colorSpace:ctx->color_space]; //kCGColorSpaceGenericRGB + CIImage *ret = [filter_input initWithBitmapData:data + bytesPerRow:frame->linesize[0] + size:frame_size + format:kCIFormatARGB8 + colorSpace:ctx->color_space]; //kCGColorSpaceGenericRGB if (!ret) { av_log(ctx, AV_LOG_ERROR, "Input image could not be initialized.\n"); return AVERROR_EXTERNAL; } - CIFilter *filter = NULL; - CIImage *filter_input = (__bridge CIImage*)ctx->input_image; - CIImage *filter_output = NULL; - // successively apply all filters for (i = 0; i < ctx->num_filters; i++) { if (i) { // set filter input to previous filter output filter_input = [(__bridge CIImage*)ctx->filters[i-1] valueForKey:kCIOutputImageKey]; - CGRect out_rect = [filter_input extent]; + out_rect = [filter_input extent]; if (out_rect.size.width > frame->width || out_rect.size.height > frame->height) { // do not keep padded image regions after filtering out_rect.origin.x = 0.0f; @@ -206,7 +207,7 @@ static int apply_filter(CoreImageContext *ctx, AVFilterLink *link, AVFrame *fram } // do not keep padded image regions after filtering - CGRect out_rect = [filter_output extent]; + out_rect = [filter_output extent]; if (out_rect.size.width > frame->width || out_rect.size.height > frame->height) { av_log(ctx, AV_LOG_DEBUG, "Cropping output image.\n"); out_rect.origin.x = 0.0f; @@ -215,8 +216,8 @@ static int apply_filter(CoreImageContext *ctx, AVFilterLink *link, AVFrame *fram out_rect.size.height = frame->height; } - CGImageRef out = [(__bridge CIContext*)ctx->glctx createCGImage:filter_output - fromRect:out_rect]; + out = [(__bridge CIContext*)ctx->glctx createCGImage:filter_output + fromRect:out_rect]; if (!out) { av_log(ctx, AV_LOG_ERROR, "Cannot create valid output image.\n"); @@ -227,12 +228,10 @@ static int apply_filter(CoreImageContext *ctx, AVFilterLink *link, AVFrame *fram CGContextRelease(ctx->cgctx); ctx->cgctx = NULL; } - size_t out_width = CGImageGetWidth(out); - size_t out_height = CGImageGetHeight(out); - if (out_width > frame->width || out_height > frame->height) { // this might result in segfault + if (CGImageGetWidth(out) > frame->width || CGImageGetHeight(out) > frame->height) { // this might result in segfault av_log(ctx, AV_LOG_WARNING, "Output image has unexpected size: %lux%lu (expected: %ix%i). This may crash...\n", - out_width, out_height, frame->width, frame->height); + CGImageGetWidth(out), CGImageGetHeight(out), frame->width, frame->height); } ctx->cgctx = CGBitmapContextCreate(frame->data[0], frame->width, @@ -247,25 +246,25 @@ static int apply_filter(CoreImageContext *ctx, AVFilterLink *link, AVFrame *fram } // copy ("draw") the output image into the frame data - CGRect rect = {{0,0},{frame->width, frame->height}}; + out_rect = CGRectMake(0, 0, frame->width, frame->height); if (ctx->output_rect) { @try { NSString *tmp_string = [NSString stringWithUTF8String:ctx->output_rect]; NSRect tmp = NSRectFromString(tmp_string); - rect = NSRectToCGRect(tmp); + out_rect = NSRectToCGRect(tmp); } @catch (NSException *exception) { av_log(ctx, AV_LOG_ERROR, "An error occurred: %s.", [exception.reason UTF8String]); return AVERROR_EXTERNAL; } - if (rect.size.width == 0.0f) { + if (out_rect.size.width == 0.0f) { av_log(ctx, AV_LOG_WARNING, "Width of output rect is zero.\n"); } - if (rect.size.height == 0.0f) { + if (out_rect.size.height == 0.0f) { av_log(ctx, AV_LOG_WARNING, "Height of output rect is zero.\n"); } } - CGContextDrawImage(ctx->cgctx, rect, out); + CGContextDrawImage(ctx->cgctx, out_rect, out); return ff_filter_frame(link, frame); } @@ -434,6 +433,7 @@ static void set_option(CoreImageContext *ctx, CIFilter *filter, const char *key, static av_cold int init(AVFilterContext *fctx) { + NSOpenGLPixelFormat *pixel_format; CoreImageContext *ctx = fctx->priv; AVDictionary *filter_dict = NULL; const AVDictionaryEntry *f = NULL; @@ -504,14 +504,12 @@ static av_cold int init(AVFilterContext *fctx) } // create GPU context on OSX - const NSOpenGLPixelFormatAttribute attr[] = { + pixel_format = [[NSOpenGLPixelFormat alloc] initWithAttributes:(const NSOpenGLPixelFormatAttribute[]){ NSOpenGLPFAAccelerated, NSOpenGLPFANoRecovery, NSOpenGLPFAColorSize, 32, 0 - }; - - NSOpenGLPixelFormat *pixel_format = [[NSOpenGLPixelFormat alloc] initWithAttributes:(void *)&attr]; + }]; ctx->color_space = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); ctx->glctx = CFBridgingRetain([CIContext contextWithCGLContext:CGLGetCurrentContext() pixelFormat:[pixel_format CGLPixelFormatObj] -- 2.39.3 (Apple Git-146) _______________________________________________ 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".