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 B2839482D1 for ; Sat, 20 Jul 2024 14:19:41 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0293268D855; Sat, 20 Jul 2024 17:19:38 +0300 (EEST) Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D705F68D6E3 for ; Sat, 20 Jul 2024 17:19:30 +0300 (EEST) Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-427b4c621b9so17740645e9.1 for ; Sat, 20 Jul 2024 07:19:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721485170; x=1722089970; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=sEWByHk0Cyyw56bi1Caj23PULd7o+pSUt4GFfVqRSH4=; b=d1pi/YGtxo0KpJ61sJNzH39jfdeLYuQt1m4doO+FwEG3FqT9mciQtl2dhPm4MbX+Tu 3fFc6kFwAW08aQRPn86GI29DMIoM6oWxSLU6M9y7rymbEU4Y7n+6vODsnfGM/ss+GNxq wD44dP+9331VC65nOW2dCy8Of/TZcUgoMBDznR329LnOd7O+MBYjHKB5E3jtyJjZjGOy Id3obz/CaLu/cFqbFuKuksLkkmF7zdK4Gg6LaDsDdzvM+r5cwh3ZfAj2jpbBbTbW3p7Q VacrDbH0kdPDecAYTi8K7VCZ7ee+2LaEBg06DGn5FftslNKAPO/DTjrzlUhwI7ORzOPC CnyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721485170; x=1722089970; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=sEWByHk0Cyyw56bi1Caj23PULd7o+pSUt4GFfVqRSH4=; b=Lgq1tBmBxYQBjEbDFe1atFG3Z5AdZ13UcH6xm8h3adLcDbjopM0ntSD7G0fZJsO+Cw dOPdVr6kaeWFEEo8vSipF//RFl9zNNxzMO8VPVSvs8PJ/fR5kcfMA3TklJo/Sk/armCE hLax6vJRRp2E9KBqL/cGhJVRyeBopTOPBCRmaH/qrh0LQWh9ER6xdFz8z+SYBLiR8NqD uvALhdUqKh50Fmiuf9pUlsx26Cfdytb2nTk7piZqj0vxEAID1P0BVU1eADr4f378Bu6Z swEAqS/1tg12iteBd8cjZgVXgEanim22GVMHslEyO2g1qg7ni3ZPxWxqByr4LnJpXXtP eZpw== X-Gm-Message-State: AOJu0Yyv783Za7CRh82qr3hAGK5RTzogKQNmMN+NnbbL9CJKV9JyxZuE 5UM6dPN1cX/L0P2pb0W23j6nUD7CPoHFZCkL27h6NaI+/9mPhrqKxM+nxmAcq05HxJ0ZigIh0RL bq6b6nDICmHuXaZBMz17YnZ+E7KTGPWXy X-Google-Smtp-Source: AGHT+IEG7fMT7fIitH81XP77S5Ytq+lJPp2VHyTpyodDy3aZGRZzT2DD3RWyAIUDpXUF6Qj8R6h4fFXsS87kMRpxfJY= X-Received: by 2002:a05:600c:5103:b0:426:6b47:290b with SMTP id 5b1f17b1804b1-427daa61cb4mr15868265e9.28.1721485169469; Sat, 20 Jul 2024 07:19:29 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aaron Date: Sat, 20 Jul 2024 10:19:18 -0400 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000000350b1061dae808b" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] Mono ADPCM for EA WVE Files / Fix Framerate 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --0000000000000350b1061dae808b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jul 19, 2024 at 07:54:37PM -0400, Peter Ross wrote: > can you post a sample file somewhere Of course. Here are some you can try out: gm_us.wve: (Stereo - 15 FPS) https://0x0.st/X97A.wve gm_sp.wve: (Stereo - 15 FPS) https://0x0.st/X97m.wve sims.wve: (Mono - 30 FPS) https://0x0.st/X97b.wve simsne.wve: (Mono - 30 FPS) https://0x0.st/X97B.wve The first two should decode no problem, and are attached for comparison purposes. Strangely, for all except gm_us.wve, the very last SCDl chunk has a number of samples that isn't divisible by 28. So you'll get a single decode error at the end for the rest of them, but they will still play all the way through and sound good. > these whitespace-only changes shouldn't go in the patch. > "count2 < ( channels..." looks out of place. drop the space after the parenthesis. > ditto for these whitespace-only changes above. > av_log trailing "\n" missing Thank you. I have cleaned those up now. > i suggest splitting this into two patches, one for mono adpcm ea, another for the frame rate fix. Done. On Fri, Jul 19, 2024 at 7:54=E2=80=AFPM Peter Ross wrote: > On Fri, Jul 19, 2024 at 07:34:18AM -0400, redacted redacted wrote: > > Hello there, > > > > The Sims 1: Unleashed makes use of WVE files for its intro videos. > > Two of the files for the game use Mono ADPCM audio instead of Stereo. > > However, FFmpeg's ADPCM_EA codec always expects the files to be in > Stereo. > > can you post a sample file somewhere > > > In addition, they're supposed to play at 30 fps, but the EA demuxer > assumes > > 15 by default. > > It appears the framerate is set with the use of the 0x1B code in the > SCHl / > > PT00 header. > > nice find > > > I have made changes in the patch attached to fix these problems. > > thx for sharing. > the patch needs a small amount of improvement. see below for my > suggestions. > > > From 306f9db010cf000eb8477aca243fc970f5b95df8 Mon Sep 17 00:00:00 2001 > > From: aaron > > Date: Fri, 19 Jul 2024 07:30:10 -0400 > > Subject: [PATCH 1/1] Mono ADPCM for EA WVE Files / Fix Framerate > > > > --- > > libavcodec/adpcm.c | 57 +++++++++++++++++++++++++----------- > > libavformat/electronicarts.c | 12 ++++++-- > > 2 files changed, 50 insertions(+), 19 deletions(-) > > > > diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c > > index f63afefd63..238214877d 100644 > > --- a/libavcodec/adpcm.c > > +++ b/libavcodec/adpcm.c > > @@ -262,7 +262,7 @@ static av_cold int adpcm_decode_init(AVCodecContext > * avctx) > > break; > > case AV_CODEC_ID_ADPCM_DTK: > > case AV_CODEC_ID_ADPCM_EA: > > - min_channels =3D 2; > > + min_channels =3D 1; > > break; > > case AV_CODEC_ID_ADPCM_AFC: > > case AV_CODEC_ID_ADPCM_EA_R1: > > @@ -914,10 +914,12 @@ static int get_nb_samples(AVCodecContext *avctx, > GetByteContext *gb, > > bytestream2_seek(gb, -8, SEEK_CUR); > > break; > > case AV_CODEC_ID_ADPCM_EA: > > + /* Stereo is 30 bytes per block */ > > + /* Mono is 15 bytes per block */ > > has_coded_samples =3D 1; > > *coded_samples =3D bytestream2_get_le32(gb); > > *coded_samples -=3D *coded_samples % 28; > > - nb_samples =3D (buf_size - 12) / 30 * 28; > > + nb_samples =3D (buf_size - 12) / (ch =3D=3D 2 ? 30 : 15) = * 28; > > break; > > case AV_CODEC_ID_ADPCM_IMA_EA_EACS: > > has_coded_samples =3D 1; > > @@ -1652,10 +1654,10 @@ static int adpcm_decode_frame(AVCodecContext > *avctx, AVFrame *frame, > > int coeff1l, coeff2l, coeff1r, coeff2r; > > int shift_left, shift_right; > > > > - /* Each EA ADPCM frame has a 12-byte header followed by 30-byt= e > pieces, > > - each coding 28 stereo samples. */ > > - > > - if (channels !=3D 2) > > + /* Each EA ADPCM frame has a 12-byte header followed by 30-byt= e > (stereo) or 15-byte (mono) pieces, > > + each coding 28 stereo/mono samples. */ > > + > > + if (channels !=3D 2 && channels !=3D 1) > > return AVERROR_INVALIDDATA; > > > > current_left_sample =3D sign_extend(bytestream2_get_le16u(&g= b), > 16); > > @@ -1665,37 +1667,58 @@ static int adpcm_decode_frame(AVCodecContext > *avctx, AVFrame *frame, > > > > for (int count1 =3D 0; count1 < nb_samples / 28; count1++) { > > int byte =3D bytestream2_get_byteu(&gb); > > - coeff1l =3D ea_adpcm_table[ byte >> 4 ]; > > - coeff2l =3D ea_adpcm_table[(byte >> 4 ) + 4]; > > + coeff1l =3D ea_adpcm_table[ byte >> 4 ]; > > + coeff2l =3D ea_adpcm_table[(byte >> 4) + 4]; > > these whitespace-only changes shouldn't go in the patch. > > > coeff1r =3D ea_adpcm_table[ byte & 0x0F]; > > coeff2r =3D ea_adpcm_table[(byte & 0x0F) + 4]; > > > > - byte =3D bytestream2_get_byteu(&gb); > > - shift_left =3D 20 - (byte >> 4); > > - shift_right =3D 20 - (byte & 0x0F); > > - > > - for (int count2 =3D 0; count2 < 28; count2++) { > > + if (channels =3D=3D 2){ > > + byte =3D bytestream2_get_byteu(&gb); > > + shift_left =3D 20 - (byte >> 4); > > + shift_right =3D 20 - (byte & 0x0F); > > + } else{ > > + /* Mono packs the shift into the coefficient byte's > lower nibble instead */ > > + shift_left =3D 20 - (byte & 0x0F); > > + } > > + > > + for (int count2 =3D 0; count2 < ( channels =3D=3D 2 ? 28 := 14); > count2++) { > > "count2 < ( channels..." looks out of place. > drop the space after the parenthesis. > > > byte =3D bytestream2_get_byteu(&gb); > > next_left_sample =3D sign_extend(byte >> 4, 4) * (1 <= < > shift_left); > > - next_right_sample =3D sign_extend(byte, 4) * (1 <= < > shift_right); > > + next_right_sample =3D sign_extend(byte, 4) * (1 << > shift_right); > > > > next_left_sample =3D (next_left_sample + > > (current_left_sample * coeff1l) + > > (previous_left_sample * coeff2l) + 0x80) >> 8; > > + > > next_right_sample =3D (next_right_sample + > > (current_right_sample * coeff1r) + > > (previous_right_sample * coeff2r) + 0x80) >> 8; > > > > previous_left_sample =3D current_left_sample; > > current_left_sample =3D av_clip_int16(next_left_sample= ); > > + > > previous_right_sample =3D current_right_sample; > > current_right_sample =3D av_clip_int16(next_right_samp= le); > > + > > *samples++ =3D current_left_sample; > > - *samples++ =3D current_right_sample; > > + > > ditto for these whitespace-only changes above. > > > + if (channels =3D=3D 2){ > > + *samples++ =3D current_right_sample; > > + } else { > > + next_left_sample =3D sign_extend(byte, 4) * (1 << > shift_left); > > + > > + next_left_sample =3D (next_left_sample + > > + (current_left_sample * coeff1l) + > > + (previous_left_sample * coeff2l) + 0x80) >> 8; > > + > > + previous_left_sample =3D current_left_sample; > > + current_left_sample =3D > av_clip_int16(next_left_sample); > > + > > + *samples++ =3D current_left_sample; > > + } > > } > > } > > - > > - bytestream2_skip(&gb, 2); // Skip terminating 0x0000 > > + bytestream2_skip(&gb, channels =3D=3D 2 ? 2 : 3); // Skip > terminating NULs > > ) /* End of CASE */ > > CASE(ADPCM_EA_MAXIS_XA, > > int coeff[2][2], shift[2]; > > i suggest splitting this into two patches, one for mono adpcm ea, another > for > the frame rate fix. > > > diff --git a/libavformat/electronicarts.c b/libavformat/electronicarts.= c > > index f7f6fd4cab..c141a172dd 100644 > > --- a/libavformat/electronicarts.c > > +++ b/libavformat/electronicarts.c > > @@ -86,6 +86,8 @@ typedef struct EaDemuxContext { > > enum AVCodecID audio_codec; > > int audio_stream_index; > > > > + int framerate; > > + > > int bytes; > > int sample_rate; > > int num_channels; > > @@ -198,6 +200,10 @@ static int > process_audio_header_elements(AVFormatContext *s) > > av_log(s, AV_LOG_DEBUG, "end of header block reached\n"); > > in_header =3D 0; > > break; > > + case 0x1B: > > + ea->framerate =3D read_arbitrary(pb); > > + av_log(s, AV_LOG_DEBUG, "Setting framerate to %u", > ea->framerate); > > + break; > > av_log trailing "\n" missing > > > default: > > av_log(s, AV_LOG_DEBUG, > > "header element 0x%02x set to 0x%08"PRIx32"\n", > > @@ -367,6 +373,8 @@ static int process_ea_header(AVFormatContext *s) > > AVIOContext *pb =3D s->pb; > > int i; > > > > + ea->framerate =3D 15; > > + > > for (i =3D 0; i < 5 && (!ea->audio_codec || !ea->video.codec); i++= ) { > > uint64_t startpos =3D avio_tell(pb); > > int err =3D 0; > > @@ -427,12 +435,12 @@ static int process_ea_header(AVFormatContext *s) > > case pQGT_TAG: > > case TGQs_TAG: > > ea->video.codec =3D AV_CODEC_ID_TGQ; > > - ea->video.time_base =3D (AVRational) { 1, 15 }; > > + ea->video.time_base =3D (AVRational) { 1, ea->framerate = }; > > break; > > > > case pIQT_TAG: > > ea->video.codec =3D AV_CODEC_ID_TQI; > > - ea->video.time_base =3D (AVRational) { 1, 15 }; > > + ea->video.time_base =3D (AVRational) { 1, ea->framerate = }; > > break; > > > > case MADk_TAG: > > -- > > -- Peter > (A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B) > _______________________________________________ > 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". > --0000000000000350b1061dae808b Content-Type: application/octet-stream; name="EA-ADPCM-Mono.patch" Content-Disposition: attachment; filename="EA-ADPCM-Mono.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lyu7o6da0 ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWRwY20uYyBiL2xpYmF2Y29kZWMvYWRwY20uYwppbmRl eCBmNjNhZmVmZDYzLi5hZmRiZWFhMTVlIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2FkcGNtLmMK KysrIGIvbGliYXZjb2RlYy9hZHBjbS5jCkBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIGF2X2Nv bGQgaW50IGFkcGNtX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICogYXZjdHgpCiAgICAgICAg IGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURfQURQQ01fRFRLOgogICAgIGNhc2UgQVZfQ09E RUNfSURfQURQQ01fRUE6Ci0gICAgICAgIG1pbl9jaGFubmVscyA9IDI7CisgICAgICAgIG1pbl9j aGFubmVscyA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURfQURQQ01f QUZDOgogICAgIGNhc2UgQVZfQ09ERUNfSURfQURQQ01fRUFfUjE6CkBAIC05MTQsMTAgKzkxNCwx MiBAQCBzdGF0aWMgaW50IGdldF9uYl9zYW1wbGVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgR2V0 Qnl0ZUNvbnRleHQgKmdiLAogICAgICAgICBieXRlc3RyZWFtMl9zZWVrKGdiLCAtOCwgU0VFS19D VVIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFWX0NPREVDX0lEX0FEUENNX0VBOgorICAg ICAgICAvKiBTdGVyZW8gaXMgMzAgYnl0ZXMgcGVyIGJsb2NrICovCisgICAgICAgIC8qIE1vbm8g aXMgMTUgYnl0ZXMgcGVyIGJsb2NrICovCiAgICAgICAgIGhhc19jb2RlZF9zYW1wbGVzID0gMTsK ICAgICAgICAgKmNvZGVkX3NhbXBsZXMgID0gYnl0ZXN0cmVhbTJfZ2V0X2xlMzIoZ2IpOwogICAg ICAgICAqY29kZWRfc2FtcGxlcyAtPSAqY29kZWRfc2FtcGxlcyAlIDI4OwotICAgICAgICBuYl9z YW1wbGVzICAgICAgPSAoYnVmX3NpemUgLSAxMikgLyAzMCAqIDI4OworICAgICAgICBuYl9zYW1w bGVzICAgICAgPSAoYnVmX3NpemUgLSAxMikgLyAoY2ggPT0gMiA/IDMwIDogMTUpICogMjg7CiAg ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVZfQ09ERUNfSURfQURQQ01fSU1BX0VBX0VBQ1M6CiAg ICAgICAgIGhhc19jb2RlZF9zYW1wbGVzID0gMTsKQEAgLTE2NTIsMTAgKzE2NTQsMTAgQEAgc3Rh dGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1l ICpmcmFtZSwKICAgICAgICAgaW50IGNvZWZmMWwsIGNvZWZmMmwsIGNvZWZmMXIsIGNvZWZmMnI7 CiAgICAgICAgIGludCBzaGlmdF9sZWZ0LCBzaGlmdF9yaWdodDsKIAotICAgICAgICAvKiBFYWNo IEVBIEFEUENNIGZyYW1lIGhhcyBhIDEyLWJ5dGUgaGVhZGVyIGZvbGxvd2VkIGJ5IDMwLWJ5dGUg cGllY2VzLAotICAgICAgICAgICBlYWNoIGNvZGluZyAyOCBzdGVyZW8gc2FtcGxlcy4gKi8KKyAg ICAgICAgLyogRWFjaCBFQSBBRFBDTSBmcmFtZSBoYXMgYSAxMi1ieXRlIGhlYWRlciBmb2xsb3dl ZCBieSAzMC1ieXRlIChzdGVyZW8pIG9yIDE1LWJ5dGUgKG1vbm8pIHBpZWNlcywKKyAgICAgICAg ICAgZWFjaCBjb2RpbmcgMjggc3RlcmVvL21vbm8gc2FtcGxlcy4gKi8KIAotICAgICAgICBpZiAo Y2hhbm5lbHMgIT0gMikKKyAgICAgICAgaWYgKGNoYW5uZWxzICE9IDIgJiYgY2hhbm5lbHMgIT0g MSkKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwogCiAgICAgICAgIGN1 cnJlbnRfbGVmdF9zYW1wbGUgICA9IHNpZ25fZXh0ZW5kKGJ5dGVzdHJlYW0yX2dldF9sZTE2dSgm Z2IpLCAxNik7CkBAIC0xNjcwLDExICsxNjcyLDE2IEBAIHN0YXRpYyBpbnQgYWRwY21fZGVjb2Rl X2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCiAgICAgICAgICAg ICBjb2VmZjFyID0gZWFfYWRwY21fdGFibGVbIGJ5dGUgJiAweDBGXTsKICAgICAgICAgICAgIGNv ZWZmMnIgPSBlYV9hZHBjbV90YWJsZVsoYnl0ZSAmIDB4MEYpICsgNF07CiAKLSAgICAgICAgICAg IGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKLSAgICAgICAgICAgIHNoaWZ0X2xl ZnQgID0gMjAgLSAoYnl0ZSA+PiA0KTsKLSAgICAgICAgICAgIHNoaWZ0X3JpZ2h0ID0gMjAgLSAo Ynl0ZSAmIDB4MEYpOworICAgICAgICAgICAgaWYgKGNoYW5uZWxzID09IDIpeworICAgICAgICAg ICAgICAgIGJ5dGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJmdiKTsKKyAgICAgICAgICAgICAg ICBzaGlmdF9sZWZ0ID0gMjAgLSAoYnl0ZSA+PiA0KTsKKyAgICAgICAgICAgICAgICBzaGlmdF9y aWdodCA9IDIwIC0gKGJ5dGUgJiAweDBGKTsKKyAgICAgICAgICAgIH0gZWxzZXsKKyAgICAgICAg ICAgICAgICAvKiBNb25vIHBhY2tzIHRoZSBzaGlmdCBpbnRvIHRoZSBjb2VmZmljaWVudCBieXRl J3MgbG93ZXIgbmliYmxlIGluc3RlYWQgKi8KKyAgICAgICAgICAgICAgICBzaGlmdF9sZWZ0ID0g MjAgLSAoYnl0ZSAmIDB4MEYpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKGlu dCBjb3VudDIgPSAwOyBjb3VudDIgPCAyODsgY291bnQyKyspIHsKKyAgICAgICAgICAgIGZvciAo aW50IGNvdW50MiA9IDA7IGNvdW50MiA8IChjaGFubmVscyA9PSAyID8gMjggOiAxNCk7IGNvdW50 MisrKSB7CiAgICAgICAgICAgICAgICAgYnl0ZSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRldSgmZ2Ip OwogICAgICAgICAgICAgICAgIG5leHRfbGVmdF9zYW1wbGUgID0gc2lnbl9leHRlbmQoYnl0ZSA+ PiA0LCA0KSAqICgxIDw8IHNoaWZ0X2xlZnQpOwogICAgICAgICAgICAgICAgIG5leHRfcmlnaHRf c2FtcGxlID0gc2lnbl9leHRlbmQoYnl0ZSwgICAgICA0KSAqICgxIDw8IHNoaWZ0X3JpZ2h0KTsK QEAgLTE2OTEsMTEgKzE2OTgsMjQgQEAgc3RhdGljIGludCBhZHBjbV9kZWNvZGVfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKICAgICAgICAgICAgICAgICBwcmV2 aW91c19yaWdodF9zYW1wbGUgPSBjdXJyZW50X3JpZ2h0X3NhbXBsZTsKICAgICAgICAgICAgICAg ICBjdXJyZW50X3JpZ2h0X3NhbXBsZSA9IGF2X2NsaXBfaW50MTYobmV4dF9yaWdodF9zYW1wbGUp OwogICAgICAgICAgICAgICAgICpzYW1wbGVzKysgPSBjdXJyZW50X2xlZnRfc2FtcGxlOwotICAg ICAgICAgICAgICAgICpzYW1wbGVzKysgPSBjdXJyZW50X3JpZ2h0X3NhbXBsZTsKKworICAgICAg ICAgICAgICAgIGlmIChjaGFubmVscyA9PSAyKXsKKyAgICAgICAgICAgICAgICAgICAgKnNhbXBs ZXMrKyA9IGN1cnJlbnRfcmlnaHRfc2FtcGxlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgICAgIG5leHRfbGVmdF9zYW1wbGUgID0gc2lnbl9leHRlbmQoYnl0ZSwg NCkgKiAoMSA8PCBzaGlmdF9sZWZ0KTsKKworICAgICAgICAgICAgICAgICAgICBuZXh0X2xlZnRf c2FtcGxlID0gKG5leHRfbGVmdF9zYW1wbGUgKworICAgICAgICAgICAgICAgICAgICAgICAgKGN1 cnJlbnRfbGVmdF9zYW1wbGUgKiBjb2VmZjFsKSArCisgICAgICAgICAgICAgICAgICAgICAgICAo cHJldmlvdXNfbGVmdF9zYW1wbGUgKiBjb2VmZjJsKSArIDB4ODApID4+IDg7CisKKyAgICAgICAg ICAgICAgICAgICAgcHJldmlvdXNfbGVmdF9zYW1wbGUgPSBjdXJyZW50X2xlZnRfc2FtcGxlOwor ICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2xlZnRfc2FtcGxlID0gYXZfY2xpcF9pbnQxNihu ZXh0X2xlZnRfc2FtcGxlKTsKKworICAgICAgICAgICAgICAgICAgICAqc2FtcGxlcysrID0gY3Vy cmVudF9sZWZ0X3NhbXBsZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg ICAgIH0KLQotICAgICAgICBieXRlc3RyZWFtMl9za2lwKCZnYiwgMik7IC8vIFNraXAgdGVybWlu YXRpbmcgMHgwMDAwCisgICAgICAgIGJ5dGVzdHJlYW0yX3NraXAoJmdiLCBjaGFubmVscyA9PSAy ID8gMiA6IDMpOyAvLyBTa2lwIHRlcm1pbmF0aW5nIE5VTHMKICAgICAgICAgKSAvKiBFbmQgb2Yg Q0FTRSAqLwogICAgIENBU0UoQURQQ01fRUFfTUFYSVNfWEEsCiAgICAgICAgIGludCBjb2VmZlsy XVsyXSwgc2hpZnRbMl07Cg== --0000000000000350b1061dae808b Content-Type: application/octet-stream; name="EA-FPS.patch" Content-Disposition: attachment; filename="EA-FPS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lyu7o9m11 ZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2VsZWN0cm9uaWNhcnRzLmMgYi9saWJhdmZvcm1hdC9l bGVjdHJvbmljYXJ0cy5jCmluZGV4IGY3ZjZmZDRjYWIuLjA0YWNmM2E0MDkgMTAwNjQ0Ci0tLSBh L2xpYmF2Zm9ybWF0L2VsZWN0cm9uaWNhcnRzLmMKKysrIGIvbGliYXZmb3JtYXQvZWxlY3Ryb25p Y2FydHMuYwpAQCAtMTk4LDYgKzE5OCwxMCBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYXVkaW9faGVh ZGVyX2VsZW1lbnRzKEFWRm9ybWF0Q29udGV4dCAqcykKICAgICAgICAgICAgIGF2X2xvZyhzLCBB Vl9MT0dfREVCVUcsICJlbmQgb2YgaGVhZGVyIGJsb2NrIHJlYWNoZWRcbiIpOwogICAgICAgICAg ICAgaW5faGVhZGVyID0gMDsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDB4MUI6 CisgICAgICAgICAgICBlYS0+dmlkZW8udGltZV9iYXNlID0gKEFWUmF0aW9uYWwpIHsxLCByZWFk X2FyYml0cmFyeShwYil9OworICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIlNl dHRpbmcgZnJhbWVyYXRlIHRvICV1XG4iLCBlYS0+dmlkZW8udGltZV9iYXNlLmRlbik7CisgICAg ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGF2X2xvZyhzLCBB Vl9MT0dfREVCVUcsCiAgICAgICAgICAgICAgICAgICAgImhlYWRlciBlbGVtZW50IDB4JTAyeCBz ZXQgdG8gMHglMDgiUFJJeDMyIlxuIiwKQEAgLTMyNSw3ICszMjksOCBAQCBzdGF0aWMgdm9pZCBw cm9jZXNzX3ZpZGVvX2hlYWRlcl9tZGVjKEFWRm9ybWF0Q29udGV4dCAqcywgVmlkZW9Qcm9wZXJ0 aWVzICp2aWRlbwogICAgIGF2aW9fc2tpcChwYiwgNCk7CiAgICAgdmlkZW8tPndpZHRoICAgICAg ID0gYXZpb19ybDE2KHBiKTsKICAgICB2aWRlby0+aGVpZ2h0ICAgICAgPSBhdmlvX3JsMTYocGIp OwotICAgIHZpZGVvLT50aW1lX2Jhc2UgICA9IChBVlJhdGlvbmFsKSB7IDEsIDE1IH07CisgICAg aWYgKCF2aWRlby0+dGltZV9iYXNlLm51bSkKKyAgICAgICAgdmlkZW8tPnRpbWVfYmFzZSAgID0g KEFWUmF0aW9uYWwpIHsgMSwgMTUgfTsKICAgICB2aWRlby0+Y29kZWMgPSBBVl9DT0RFQ19JRF9N REVDOwogfQogCkBAIC00MjcsMTIgKzQzMiwxNCBAQCBzdGF0aWMgaW50IHByb2Nlc3NfZWFfaGVh ZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKICAgICAgICAgY2FzZSBwUUdUX1RBRzoKICAgICAgICAg Y2FzZSBUR1FzX1RBRzoKICAgICAgICAgICAgIGVhLT52aWRlby5jb2RlYyA9IEFWX0NPREVDX0lE X1RHUTsKLSAgICAgICAgICAgIGVhLT52aWRlby50aW1lX2Jhc2UgICA9IChBVlJhdGlvbmFsKSB7 IDEsIDE1IH07CisgICAgICAgICAgICBpZiAoIWVhLT52aWRlby50aW1lX2Jhc2UubnVtKQorICAg ICAgICAgICAgICAgIGVhLT52aWRlby50aW1lX2Jhc2UgICA9IChBVlJhdGlvbmFsKSB7IDEsIDE1 IH07CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIHBJUVRfVEFHOgogICAgICAg ICAgICAgZWEtPnZpZGVvLmNvZGVjID0gQVZfQ09ERUNfSURfVFFJOwotICAgICAgICAgICAgZWEt PnZpZGVvLnRpbWVfYmFzZSAgID0gKEFWUmF0aW9uYWwpIHsgMSwgMTUgfTsKKyAgICAgICAgICAg IGlmICghZWEtPnZpZGVvLnRpbWVfYmFzZS5udW0pCisgICAgICAgICAgICAgICAgZWEtPnZpZGVv LnRpbWVfYmFzZSAgID0gKEFWUmF0aW9uYWwpIHsgMSwgMTUgfTsKICAgICAgICAgICAgIGJyZWFr OwogCiAgICAgICAgIGNhc2UgTUFEa19UQUc6Cg== --0000000000000350b1061dae808b Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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". --0000000000000350b1061dae808b--