From patchwork Fri Nov 24 00:51:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 6317 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp1464876jah; Thu, 23 Nov 2017 16:53:14 -0800 (PST) X-Google-Smtp-Source: AGs4zMYZZIx/SY9NGdvuArBDWzaZT3Vm+Jikb5QiFZdXdMCP7obcaRY3JfvxR9TbgQ87gD0AsVZE X-Received: by 10.223.182.153 with SMTP id j25mr20417287wre.242.1511484794250; Thu, 23 Nov 2017 16:53:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511484794; cv=none; d=google.com; s=arc-20160816; b=pFvAmb8Uc/GJu9+n9YxoM8I99pzUt2Rytr8UpxHf8szPxZ4Q2R/DBAO8eU3fDpgclR kMEVYQj68F+ov+ENSgmAQ0L4peC1Asz6xMF1CvuRoXOPV6VPSG5RY+ZkPUj1P4I/oPLH YHrrWYs3bB2D8L2w1SVkRXEasjvR2iDaeyAXSTsAVKIm5z8BpWcc9wd1xYxEkONx6AkK 5k1ZHJmkomGnjnE1R0AFHmVFAsnizNWWZn68rE+zrS4m7apt32G8ZVwbDrBpqlRPDZnb 1t/LdbnIghIx6SuDnRj4VHSm5yXW6/s22WXq1pnE7HJA30NBP553/f62xzYEFdeS1fau K9QA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=k2vqjvjGp2F50ORb3TfrHpe8ckYJ0a9Qo6XRfsauSQs=; b=mXxNV0YvAuK5SE8tVS98mR0XWegXNmdJLBveoHGVtTgAnyPYmnOe7REmQCl4LpfptW daKgJK+f0NbFIXhzQ0k6gz8txGaT8rKxbHRcxJFbolKbz212MMWzZ8vQ4pqKiBJ4IWCr BWDDA8JO8y9glFCG4SREW5MloBKvJAerSgxeKi/1396WHsJodVV0gOBSbie1ofQ/OIDv q/U6u2sz6M7tDqE9igp/hIDAbndj9Pcc71Bzt4clLBvekW785IRi28zBz0wYBAsglVUz 19vu15/6X9eBX+cjtZ3buvK+lJffu4aSjfpSZsBFiBdtfqNMKHVbehmJKv3vqgAXratj i9Sw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=FnO4aLRF; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v22si15140994wrd.388.2017.11.23.16.53.13; Thu, 23 Nov 2017 16:53:14 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=FnO4aLRF; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E26F668A265; Fri, 24 Nov 2017 02:51:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8D20C68A1B0 for ; Fri, 24 Nov 2017 02:51:51 +0200 (EET) Received: by mail-wr0-f196.google.com with SMTP id r2so12497856wra.13 for ; Thu, 23 Nov 2017 16:51:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=2J9CDQm8OaSMWIk4qAJWPSwTKc88z02aialvnLRpUCs=; b=FnO4aLRF3T4XZjX90UWyLkOxDjgAG+s6MawxTc4RFKJuYRMAA6l7XOggkyTRN/+NhJ KEKHh0p90H7gdsuueAb+xgo01Eg63dyTw1F9rjMnfkWEO8RrhggxOesGE3tChQN1qHvj OFWQYqIGM5VloYFDhcAG9ThqmcdU4nTzWQfRrLwG7Tc5kcukSAqkfjmUo1PCG5zCyuPP 1ZrCNdBoEoPQhFP2FG7uyt9bBfrJlR1OXcOO9g1J5OwOEQS7jxaUN5Gi+KcK4S03V2S0 lgC7SvgFQm4ZtMK8fuGmdu25kRl2iMDZjpJeqlLkn0Vu6Skb5YaODmWTureLZiXpadWP VVbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=2J9CDQm8OaSMWIk4qAJWPSwTKc88z02aialvnLRpUCs=; b=ZIxaCsNShPcpaSCCPFl11IEKQggmc3xg/Rsd2R0kCnWQyxNa5AwVHHpRKDVwT50Qv5 Fh5rsTVEyCikCY9zOEPZiMjr2KDozKz4M1+wc/bggUmx/WBT6nyww6eHVBDbiLV2J6SH q4hXi2li0m0pntUKTVsKsdTWpqV44xRynEPpNdW7GU5ZxZEHVFaW9jbzYwpqJnfkv/K+ X7thEVIszXEJSp2cOVHLjQDPmje580t/EuvErLrQ3bw3ZejN78JDWOuB67DjWY/bevxo ZxMLKOzGXo9D/L1B/MSgNlsne5+DqM0i+mHwEi7EscCnw+lyNiYEmQvcuF5A9gNwWQv0 Ll+Q== X-Gm-Message-State: AJaThX4e6qUwDCz63CWLIbzJ4ggO8l2LSYmszE8pyTjKqzoAxEjTLJF/ AW69WfpbA5xYerk/VNzkr7cl+Xhr X-Received: by 10.223.133.250 with SMTP id 55mr14779750wru.23.1511484711746; Thu, 23 Nov 2017 16:51:51 -0800 (PST) Received: from rywe.jkqxz.net (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id h7sm4489655wrb.35.2017.11.23.16.51.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 23 Nov 2017 16:51:51 -0800 (PST) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Nov 2017 00:51:30 +0000 Message-Id: <20171124005134.5683-13-sw@jkqxz.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171124005134.5683-1-sw@jkqxz.net> References: <20171124005134.5683-1-sw@jkqxz.net> Subject: [FFmpeg-devel] [PATCH 13/17] lavc/mjpeg: Add profiles for MJPEG using SOF marker codes X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This is needed by later hwaccel code to tell which encoding process was used for a particular frame, because hardware decoders may only support a subset of possible methods. --- libavcodec/avcodec.h | 6 ++++++ libavcodec/mjpegdec.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 0972df0bde..c1e68b1d13 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2897,6 +2897,12 @@ typedef struct AVCodecContext { #define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 #define FF_PROFILE_HEVC_REXT 4 +#define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0 +#define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1 +#define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2 +#define FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3 +#define FF_PROFILE_MJPEG_JPEG_LS 0xf7 + /** * level * - encoding: Set by user. diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index e005dd0cd3..f01d44a169 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -2288,6 +2288,10 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, break; case SOF0: case SOF1: + if (start_code == SOF0) + s->avctx->profile = FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT; + else + s->avctx->profile = FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT; s->lossless = 0; s->ls = 0; s->progressive = 0; @@ -2295,6 +2299,7 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, goto fail; break; case SOF2: + s->avctx->profile = FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT; s->lossless = 0; s->ls = 0; s->progressive = 1; @@ -2302,6 +2307,7 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, goto fail; break; case SOF3: + s->avctx->profile = FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS; s->avctx->properties |= FF_CODEC_PROPERTY_LOSSLESS; s->lossless = 1; s->ls = 0; @@ -2310,6 +2316,7 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, goto fail; break; case SOF48: + s->avctx->profile = FF_PROFILE_MJPEG_JPEG_LS; s->avctx->properties |= FF_CODEC_PROPERTY_LOSSLESS; s->lossless = 1; s->ls = 1;