Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Development

Reply
 
Thread Tools Search this Thread Display Modes
Old 14th September 2013, 02:54   #1801  |  Link
qyot27
...?
 
qyot27's Avatar
 
Join Date: Nov 2005
Location: Florida
Posts: 1,416
EDIT 2013-10-04: Newer build here:
http://forum.doom9.org/showthread.php?p=1646661#post1646661

FFMS2 C-plugin r836

Optimized for Pentium III and SSE.

Explanation of the revision number: the difference between trunk and Git's internal revision counting is 67 commits, so it's just the dumb math of running 'git rev-list --count HEAD' on the cplugin_master branch and then adding 67 to it. The short version: ignore the revision number right now, it's caught up to the master branch.

Since FFmpeg got the Opus-in-Matroska stuff sorted out over the last couple days, it's been patched to also be capable of handling that.

Built against ffmpeg version r56269 git-108b91c.

FFmpeg configuration:
--enable-gpl
--enable-version3
--disable-w32threads
--enable-avresample
--enable-libopus
--disable-decoder=utvideo --enable-libutvideo
--disable-decoder=vp8 --enable-libvpx
--disable-encoders
--enable-avisynth
--disable-muxers
--disable-debug
--disable-network
--disable-hwaccels
--disable-indevs
--disable-outdevs
--cpu=pentium3
--extra-cflags='-mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DPTW32_STATIC_LIB'
--target-os=mingw32
--arch=x86

Last edited by qyot27; 4th October 2013 at 15:02.
qyot27 is offline   Reply With Quote
Old 18th September 2013, 15:52   #1802  |  Link
TheRyuu
warpsharpened
 
Join Date: Feb 2007
Posts: 787
ffms2-2.19.7z

2.19 is the same as 2.18 except it actually compiles outside of msvc, hence the skip to 2.19. See the 2.18 release post for a changelog.

Code:
2.19 20130917

Built with MSVC 2012 Update 3:
c99-to-c89      7e75aa9     https://github.com/libav/c99-to-c89
ffmpeg          78f680c     http://www.ffmpeg.org/
opencore-amr    0.13        http://sourceforge.net/projects/opencore-amr/
zlib            1.28        http://www.zlib.net

../ffmpeg/configure --enable-gpl --enable-version3 --enable-runtime-cpudetect \
--disable-debug --samples=/f/build/fate-ffmpeg-samples --toolchain=msvc \
--enable-w32threads --enable-avresample --enable-zlib \
--enable-libopencore-amrnb --enable-libopencore-amrwb --disable-inline-asm \
--disable-muxers --disable-encoders --disable-filters --disable-hwaccels \
--disable-network --disable-devices
TheRyuu is offline   Reply With Quote
Old 4th October 2013, 15:02   #1803  |  Link
qyot27
...?
 
qyot27's Avatar
 
Join Date: Nov 2005
Location: Florida
Posts: 1,416
EDIT: Newer build available here..

FFMS2 C-plugin r783+33

Optimized for Pentium III and SSE. Includes a fix that allows the plugin to work with the current version of AviSynth+.

I've settled on a different method of representing the revision number, which is why the number dropped.

Built against FFmpeg r56888 git-bb9e9ee, has a single patch to avoid crashing on non-SSE2 processors

FFmpeg configuration:
Code:
--cross-prefix=i686-w64-mingw32-
--enable-gpl
--enable-version3
--disable-w32threads
--enable-avresample
--enable-libopus
--disable-decoder=utvideo
--enable-libutvideo
--disable-decoder=vp8
--enable-libvpx
--disable-encoders
--enable-avisynth
--disable-muxers
--disable-debug
--disable-network
--disable-hwaccels
--disable-indevs
--disable-outdevs
--cpu=pentium3
--extra-cflags='-mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DPTW32_STATIC_LIB'
--target-os=mingw32
--arch=x86

Last edited by qyot27; 29th October 2013 at 11:35.
qyot27 is offline   Reply With Quote
Old 27th October 2013, 17:54   #1804  |  Link
easyfab
Registered User
 
Join Date: Jan 2002
Posts: 332
There is now a native Vp9 and Hevc decoder in ffmpeg, can FFMS2 use this ?
easyfab is offline   Reply With Quote
Old 28th October 2013, 14:30   #1805  |  Link
qyot27
...?
 
qyot27's Avatar
 
Join Date: Nov 2005
Location: Florida
Posts: 1,416
Quote:
Originally Posted by easyfab
There is now a native Vp9 and Hevc decoder in ffmpeg, can FFMS2 use this ?
If it's been built against a new enough build of FFmpeg it can. It's more or less automatic (for the lavf demuxer, anyway).


EDIT: Newer build available here.

FFMS2 C-plugin r800+29

Optimized for Pentium III and SSE.

Built against FFmpeg r57511 git-8930637:
Code:
--enable-gpl
--enable-version3
--disable-w32threads
--disable-ffprobe
--disable-avdevice
--disable-swresample
--disable-postproc
--disable-avfilter
--enable-avresample
--disable-doc
--disable-debug
--disable-encoders
--disable-muxers
--disable-network
--disable-hwaccels
--enable-libilbc
--enable-libopus
--enable-libspeex
--disable-decoder=utvideo --enable-libutvideo
--enable-avisynth
--cpu=pentium3
--extra-cflags="-mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DPTW32_STATIC_LIB"
--target-os=mingw32
--arch=x86

Last edited by qyot27; 21st December 2013 at 10:53.
qyot27 is offline   Reply With Quote
Old 28th October 2013, 18:00   #1806  |  Link
easyfab
Registered User
 
Join Date: Jan 2002
Posts: 332
Thanks for the build.
easyfab is offline   Reply With Quote
Old 29th October 2013, 08:23   #1807  |  Link
LigH
German doom9/Gleitz SuMo
 
LigH's Avatar
 
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 6,746
Works with HEVC video in MP4. But due to the complexity of the format, random seeking is a bit unreliable (or just very slow to get decoded to the target?), linear access strongly recommended.
__________________

New German Gleitz board
MediaFire: x264 | x265 | VPx | AOM | Xvid
LigH is offline   Reply With Quote
Old 31st October 2013, 14:21   #1808  |  Link
AlanHK
Registered User
 
Join Date: May 2006
Posts: 237
When using an MKV source with multiple audio tracks, is there a way to get the native specs?

Often it's obvious, different languages or number of channels, but I have some with with AC3 stereo at a high bit rate and AAC stereo at a low rate. How can I be sure which one I'm decoding?

Or what can reliably give me the same "atrack" number that ffms2 uses and the spec of that track?
AlanHK is offline   Reply With Quote
Old 31st October 2013, 22:11   #1809  |  Link
TheFluff
Excessively jovial fellow
 
Join Date: Jun 2004
Location: rude
Posts: 1,100
Quote:
Originally Posted by AlanHK View Post
When using an MKV source with multiple audio tracks, is there a way to get the native specs?

Often it's obvious, different languages or number of channels, but I have some with with AC3 stereo at a high bit rate and AAC stereo at a low rate. How can I be sure which one I'm decoding?

Or what can reliably give me the same "atrack" number that ffms2 uses and the spec of that track?
I thought that ffmsindex would tell you but apparently I was wrong. The API does expose the information as well but apparently there's no way to access it short of writing your own program. I guess we should really add an option of listing all tracks to ffmsindex.
TheFluff is offline   Reply With Quote
Old 1st November 2013, 01:08   #1810  |  Link
raffriff42
Retried Guesser
 
raffriff42's Avatar
 
Join Date: Jun 2012
Posts: 1,373
>what can reliably give me the same "atrack" number that ffms2 uses and the spec of that track?

This little batch file will. FFprobe.exe (or ffmpeg.exe or ffplay.exe) will list the stream numbers and other information on any file it understands. In limited tests I have found the stream numbers to be compatible with FFMS. I keep this batch file in my Send To folder for quick info on any media file.
Code:
"path\to\ffmpeg\ffprobe.exe" -i "%~dpnx1"
pause
raffriff42 is offline   Reply With Quote
Old 13th November 2013, 13:54   #1811  |  Link
LigH
German doom9/Gleitz SuMo
 
LigH's Avatar
 
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 6,746
Using libav decoders, FFMS2 is apparently able to decode Lagarith YUV 4:2:0; but Lagarith YUV 4:2:2 fails, according to tests by users in the German doom9/Gleitz forum. But this format is used by some people for e.g. analog capturing or intermediately for interlaced conversions.

Therefore I'd like to put a feature request to get Lagarith YUV 4:2:2 supported too. According to JEEB, it may be possible in conjunction with 4:2:0, if it doesn't differ severely. Provided any developer has enough time and interest in it.

Are there better places to ask for it than here?
__

P.S.:

It is already implemented. Sorry for the noise. The reporter must have used an outdated version...
__________________

New German Gleitz board
MediaFire: x264 | x265 | VPx | AOM | Xvid

Last edited by LigH; 13th November 2013 at 14:21.
LigH is offline   Reply With Quote
Old 21st December 2013, 09:17   #1812  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 7,255
@qyot27: could you build a current version? Saw 'Fix infinite loop on garbage data at the beginning of AAC files' form 10th of december and wanted to test it.
__________________
Hybrid here in the forum, homepage
Selur is offline   Reply With Quote
Old 21st December 2013, 10:52   #1813  |  Link
qyot27
...?
 
qyot27's Avatar
 
Join Date: Nov 2005
Location: Florida
Posts: 1,416
Quote:
Originally Posted by Selur View Post
@qyot27: could you build a current version? Saw 'Fix infinite loop on garbage data at the beginning of AAC files' form 10th of december and wanted to test it.
Coincidentally, I had built it about 5 hours ago, mostly for having a newer build of FFmpeg.

FFMS2 C-plugin r809+35

Optimized for Pentium-III and SSE.

FFmpeg configuration:
Code:
ffmpeg version r59267 git-10a9f33 Copyright (c) 2000-2013 the FFmpeg developers
  built on Dec 20 2013 23:42:33 with gcc 4.8.2 (GCC)

configuration:
  --prefix=/home/qyot27/win32_build
  --cross-prefix=i686-w64-mingw32-
  --enable-gpl
  --enable-version3
  --disable-w32threads
  --enable-avresample
  --disable-doc
  --enable-libopus
  --disable-decoder=utvideo
  --enable-libutvideo
  --disable-encoders
  --disable-muxers
  --disable-doc
  --disable-debug
  --disable-network
  --disable-hwaccels
  --disable-indevs
  --disable-outdevs
  --cpu=pentium3
  --extra-cflags='-mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DPTW32_STATIC_LIB'
  --target-os=mingw32
  --arch=x86
EDIT 2014-03-21: Updated build here

Last edited by qyot27; 22nd March 2014 at 02:50.
qyot27 is offline   Reply With Quote
Old 21st December 2013, 10:53   #1814  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 7,255
Nice! Thanks!
__________________
Hybrid here in the forum, homepage
Selur is offline   Reply With Quote
Old 21st December 2013, 12:33   #1815  |  Link
Taurus
Registered User
 
Taurus's Avatar
 
Join Date: Mar 2002
Location: Krautland
Posts: 903
Thank you!
Taurus is offline   Reply With Quote
Old 2nd January 2014, 01:03   #1816  |  Link
pandv2
Registered User
 
Join Date: Sep 2011
Posts: 37
@qyot27: Thanks for your build.

I replaced an more older oficial build with your build. And my program (a C# program) has stopped working.

After investigation is because:

In the oficial build the functions are exported as: _FFMS_Init@8
But in your build the functions are exported as: FFMS_Init@8, without the initial underscore.

I don't know who is correct, but I would appreciate if both builds can follow the same schema.

Windows like more the schema with the underscore, because I can name the function FFMS_Init and is automatically linked. With your dll i need to add a atributte (EntryPoint="FFMS_Init@8") to each function.

Last edited by pandv2; 2nd January 2014 at 01:05. Reason: more info
pandv2 is offline   Reply With Quote
Old 2nd January 2014, 01:47   #1817  |  Link
qyot27
...?
 
qyot27's Avatar
 
Join Date: Nov 2005
Location: Florida
Posts: 1,416
Quote:
Originally Posted by pandv2 View Post
@qyot27: Thanks for your build.

I replaced an more older oficial build with your build. And my program (a C# program) has stopped working.

After investigation is because:

In the oficial build the functions are exported as: _FFMS_Init@8
But in your build the functions are exported as: FFMS_Init@8, without the initial underscore.

I don't know who is correct, but I would appreciate if both builds can follow the same schema.

Windows like more the schema with the underscore, because I can name the function FFMS_Init and is automatically linked. With your dll i need to add a atributte (EntryPoint="FFMS_Init@8") to each function.
Not possible, because they aren't built with the same compiler. The official builds are compiled with MSVC, the C plugin is compiled with GCC/G++ - while C is coincidentally cross-compatible between the two (as I understand it), C++ is not. FFMS_Init is defined in the C++ portion of FFMS2's code, so it's affected by the fundamental difference in name mangling (et al.) between G++ and MSVC.

You'll probably just want to stick with the official releases:
https://github.com/FFMS/ffms2/releases
qyot27 is offline   Reply With Quote
Old 2nd January 2014, 02:16   #1818  |  Link
Plorkyeran
Registered User
 
Join Date: Mar 2008
Posts: 26
All of ffms2's public API, including FFMS_Init, is declared as extern "C". GCC just doesn't default to the C name mangling scheme used for Windows DLLs. Building with -fleading-underscore should fix that, but may break loading it as an avs c plugin. If that's the case, a def file is probably required.
Plorkyeran is offline   Reply With Quote
Old 2nd January 2014, 02:41   #1819  |  Link
LoRd_MuldeR
Software Developer
 
LoRd_MuldeR's Avatar
 
Join Date: Jun 2005
Location: Last House on Slunk Street
Posts: 13,248
Quote:
Originally Posted by qyot27 View Post
Not possible, because they aren't built with the same compiler.
Well, technically it is possible, I think. Different C++ compilers use different name mangling schemes, which causes this kind of problems. Since there is no official standard for name mangling, no compiler is "wrong" or "correct". But even in C++ code you can use extern "C" to have the function exported with a plain C name. Furthermore, even if you have an existing DLL, you can generate your own import library (.lib) for that DLL using the "lib" tool and a suitable DEF file. Using the DEF file method, the name of the DLL entry point and the corresponding C/C++ symbol name don't have to be the same (which is in contrast to the auto-generated import libraries). So you could do something like:

Code:
LIBRARY ffms2.dll
EXPORTS
_FFMS_Init@8=FFMS_Init@8
[EDIT] Plorkyeran was faster [/EDIT]
__________________
Go to https://standforukraine.com/ to find legitimate Ukrainian Charities 🇺🇦✊

Last edited by LoRd_MuldeR; 2nd January 2014 at 02:46.
LoRd_MuldeR is offline   Reply With Quote
Old 2nd January 2014, 03:59   #1820  |  Link
qyot27
...?
 
qyot27's Avatar
 
Join Date: Nov 2005
Location: Florida
Posts: 1,416
extern "C" had skipped my mind, sorry.

I'm not sure if -fleading-underscore actually did anything. It still seems to show up sans leading underscore when I check in dllexp.
qyot27 is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 07:04.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.