Git Product home page Git Product logo

turingcodec's Introduction

Turing codec

The turing codec (see http://turingcodec.org) is a software HEVC codec

The code is published under the GPL version 2 licence. Commercial support and intellectual property rights for the Turing codec are also available under a proprietary license. For more information, contact us at info @ turingcodec.org.

Building for the first time

If any problems are discovered during this process, please edit the project's README.md file to change or improve these instructions. This way, others will not have to suffer the same issues.

First, clone the code from GitHub:

git clone https://github.com/bbc/turingcodec.git
cd turingcodec
git checkout {stable|develop}

Microsoft Windows (with Visual Studio 2015)

Prequisites

  • CMake for Windows (version 3.4.1 used when writing these instructions).

Building the project executable

  • Open CMake for Windows
  • Set "Where is the source code" as the folder containing this README.md file
  • Set "Where to build the binaries" to any new folder location you prefer
  • Click 'Configure' and select the Win64 configuration for Visual Studio 2015
  • Click 'Generate'
  • Project file "Turing.sln" should be emitted into the new build folder location - open this in Visual Studio and build either as Debug or `Release

Linux

Prerequisites

CMake

Run the following commands to install necessary tools and libraries:

sudo apt-get update
sudo apt-get install git-core
sudo apt-get install g++
sudo apt-get install make

Make a local clone of this repository and cd to its root folder.

Build and test

mkdir -p build/debug build/release
cd build/release
cmake ../../

Build the Turing codec executable:

make

turingcodec's People

Contributors

chrisn avatar kupix avatar sgblasi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

turingcodec's Issues

Cannot compile with MSYS2 + MinGW-w64

Both CMake GUI and the command-line CMake return errors, certainly because the current "cmake files" are incomplete.
Also, please stop assuming that Visual Studio is the only way to compile programs on Windows.
Specially for command-line applications, µ$oft Visual Studio is overkill.

Remove in-tree external dependencies

Both boost and havoc could be added as ExternalProject dependencies via CMake, with boost as a system dependency by default.

  • Boost
    • Check usage of boost libraries, and confirm compatibility with mainline
  • Havoc
    • Need to evaluate licensing issues

Test on a variety of compilers/OSes

Currently the build is tested on gcc 4.8.2 and 4.8.4, with travis testing on gcc 5.

Turingcodec should be tested on at least the following compilers/operating systems:

  • Linux
    • gcc 6
    • clang 3.8
  • macOS
    • gcc 6
    • Xcode Clang
  • FreeBSD
    • Clang 3.8.0
    • Clang 3.0 Not supported.
    • gcc 6

Note that travis-ci can test all the macOS and Linux compilers, and should be easy to setup. The issue is that turingcodec doesn't currently compile on these configurations.

Compiling Error on Ubuntu 16.04 Linux

-- Configuring done
-- Generating done
-- Build files have been written to: /root/old/turingcodec/build/release
[ 15%] Built target boost_program_options
[ 27%] Built target boost_filesystem
[ 30%] Built target boost_system
[ 34%] Built target boost_timer
[ 39%] Built target boost_chrono
Scanning dependencies of target havoc
[ 40%] Building CXX object havoc/CMakeFiles/havoc.dir/havoc.cpp.o
[ 42%] Building CXX object havoc/CMakeFiles/havoc.dir/pred_intra.cpp.o
c++: internal compiler error: killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.
havoc/CMakeFiles/havoc.dir/build.make:182: recipe for target 'havoc/CMakeFiles/havoc.dir/pred_intra.cpp.o' failed
make[2]: *** [havoc/CMakeFiles/havoc.dir/pred_intra.cpp.o] Error 4
CMakeFiles/Makefile2:392: recipe for target 'havoc/CMakeFiles/havoc.dir/all' failed
make[1]: *** [havoc/CMakeFiles/havoc.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

DirectShow interface possibility?

Hi,

I want to know whether it is possible to use the encoder/decoder using DirectShow API?
For example there is a Camera Software SDK Common Vision Blox from STEMMER IMAGING. They have a so called 'Movie2' SDK which has possibility to record camera video and save it using the specified encoder to disk. Movie2 should support every encoder that can be invoked using DirectShow. How can I register turingcodec to DirectShow API on my windows system? Does that even work?

Thanks in advance, some clarifying of this would help me alot.
Have a nice weekend.

Please make havoc optional

Havoc does not build with clang (main compiler on MacOSX, FreeBSD and soon some Linux distributions) and does not support non-x86 platforms (e.g. Power8 and server-grade arm64).

Please clarify patent status

I assume there is some patents involved, is there is patent grant? a clear statement over patents, usages and distribution rights is needed.

cna NOT compiled in linux

Hello@matteonaccari,
I have download these codec, but they can NOT compiled. Error is reported:
turingcodec/havoc/pred_inter.h:35: error:expected unqualified-id before ‘using’

g++ version:4.4.7
contos 6.5
Could you tell me how to resolve this problem?Thank you very much

vs2015 assert - turing.exe decode

Hi,

I've tried decoding HEVC mp4 file (encoded via x265 codec using ffmpeg)
I've got the following assert (x eqauls to 24 while Fixed<V>::value is 0 as far I understand the code)

turing.exe!_wassert(const wchar_t * expression, const wchar_t * file_name, unsigned int line_number) Line 444	C++	Symbols loaded.
>	turing.exe!Derive<leading_zero_8bits,PointerTuple<StatePicture,StateDecode>,void>::set(leading_zero_8bits __formal, int x, PointerTuple<StatePicture,StateDecode> & h) Line 283	C++	Symbols loaded.
 	turing.exe!ReadU<leading_zero_8bits,f>::go<Handler<Decode<void>,StatePicture,StateDecode> >(Element<leading_zero_8bits,f> e, Handler<Decode<void>,StatePicture,StateDecode> & h) Line 318	C++	Symbols loaded.
 	turing.exe!Handler<Decode<void>,StatePicture,StateDecode>::operator()<leading_zero_8bits,f>(leading_zero_8bits v, f m) Line 176	C++	Symbols loaded.
 	turing.exe!Syntax<byte_stream_nal_unit>::go<Handler<Decode<void>,StatePicture,StateDecode> >(const byte_stream_nal_unit & fun, Handler<Decode<void>,StatePicture,StateDecode> & h) Line 40	C++	Symbols loaded.
 	turing.exe!Handler<Decode<void>,StatePicture,StateDecode>::operator()<byte_stream_nal_unit>(byte_stream_nal_unit fun) Line 184	C++	Symbols loaded.
 	turing.exe!Read<AccessUnit>::go<Handler<Decode<void>,StatePicture,StateDecode> >(AccessUnit au, Handler<Decode<void>,StatePicture,StateDecode> & h) Line 2697	C++	Symbols loaded.
 	turing.exe!Handler<Decode<void>,StatePicture,StateDecode>::operator()<AccessUnit>(AccessUnit fun) Line 184	C++	Symbols loaded.
 	turing.exe!Read<CodedVideoSequence>::go<Handler<Decode<void>,StateDecode> >(CodedVideoSequence __formal, Handler<Decode<void>,StateDecode> & h) Line 2643	C++	Symbols loaded.
 	turing.exe!Handler<Decode<void>,StateDecode>::operator()<CodedVideoSequence>(CodedVideoSequence fun) Line 184	C++	Symbols loaded.
 	turing.exe!Read<Bitstream>::go<Handler<Decode<void>,StateDecode> >(Bitstream __formal, Handler<Decode<void>,StateDecode> & h) Line 2607	C++	Symbols loaded.
 	turing.exe!Handler<Decode<void>,StateDecode>::operator()<Bitstream>(Bitstream fun) Line 184	C++	Symbols loaded.
 	turing.exe!decode(int argc, const char * const * argv, std::basic_ostream<char,std::char_traits<char> > & cout, std::basic_ostream<char,std::char_traits<char> > & cerr) Line 110	C++	Symbols loaded.
 	turing.exe!main(int argc, const char * * argv) Line 135	C++	Symbols loaded.
 	[External Code]		Annotated Frame

turing.exe decode does not honor -- frames CL switch

How to reproduce : turing.exe decode --frames 1 c:\foo.hevc
Observed behavior: decoding is keep going even after 1 frame/picture has been decoded

It seems there is no call to StateDecode::stop() (I guess it should be called once in a while during the decode loop)

bool stop() const
{
    return this->maxPictures != 0 && this->n == this->maxPictures;
}

Build fail OS-X

OSX home-brew x86_64 build:

set CMAKE_CXX_FLAGS_DEBUG -stdlib=libc++ -std=c++11 -fno-operator-names

still leaves error at:
[ 47%] Building CXX object havoc/CMakeFiles/havoc.dir/hadamard.cpp.o
In file included from
../Projects/2016_09_12_TuringCodec/turingcodec/havoc/hadamard.cpp:23:
../Projects/2016_09_12_TuringCodec/turingcodec/havoc/Jit.h:155:24: error:
reinterpret_cast from 'const uint8 ' (aka 'const unsigned char *') to 'int ()(const unsigned
char *, long, const unsigned char *, long)' casts away qualifiers
return reinterpret_cast<F *>(this->getCode());

Encoding Details

Hi,

Does Turing Codec supports YUV 4:2:2 10bit encoding?
Is there any info on encoding capabilities?

Kind Regards,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.