FFmpegSource2 beta 6, see ffms2.html for change details
Originally committed to SVN as r2770.
This commit is contained in:
parent
1d69da533c
commit
0e299f9146
23 changed files with 38 additions and 34 deletions
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -114,8 +114,8 @@ struct AVFrameLite {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TrackTimeBase {
|
struct TrackTimeBase {
|
||||||
int Num;
|
int64_t Num;
|
||||||
int Den;
|
int64_t Den;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FrameInfo {
|
class FrameInfo {
|
||||||
|
|
|
@ -7,7 +7,7 @@ FFmpegSource2 Documentation
|
||||||
<body>
|
<body>
|
||||||
<h1>FFmpegSource2 Documentation</h1>
|
<h1>FFmpegSource2 Documentation</h1>
|
||||||
<p>
|
<p>
|
||||||
Opens files using ffmpeg and nothing else. May be frame accurate on good days. The source is MIT licensed and can be obtained from https://spaceboyz.net/svn/aegisub/trunk/FFmpegSource2. The precompiled binary is GPL licensed. If you are religious you may consider this the second coming.
|
Opens files using ffmpeg and nothing else. May be frame accurate on good days. The source is MIT licensed and can be obtained from "http://svn.aegisub.net/trunk/aegisub/FFmpegSource2/". The precompiled binary is GPL licensed. If you are religious you may consider this the second coming.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Compatibility - Video</h2>
|
<h2>Compatibility - Video</h2>
|
||||||
|
@ -226,6 +226,11 @@ Note that --enable-w32threads is required for multithreaded decoding to work.
|
||||||
|
|
||||||
<h2>Changes</h2>
|
<h2>Changes</h2>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>2.00 beta 6<ul>
|
||||||
|
<li>Negative timecodes and other bugs caused by an integer overflow fixed</li>
|
||||||
|
<li>Updated FFmpeg to rev X</li>
|
||||||
|
</ul></li>
|
||||||
|
|
||||||
<li>2.00 beta 5<ul>
|
<li>2.00 beta 5<ul>
|
||||||
<li>FFMSIndex should now print the progress properly when another application reads its output</li>
|
<li>FFMSIndex should now print the progress properly when another application reads its output</li>
|
||||||
<li>Added missing variables and explanations to the manual</li>
|
<li>Added missing variables and explanations to the manual</li>
|
||||||
|
@ -234,7 +239,6 @@ Note that --enable-w32threads is required for multithreaded decoding to work.
|
||||||
<li>Updated FFmpeg to rev 18249</li>
|
<li>Updated FFmpeg to rev 18249</li>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
|
||||||
|
|
||||||
<li>2.00 beta 4<ul>
|
<li>2.00 beta 4<ul>
|
||||||
<li>Added the function FFNoLog which suppresses all messages from ffmpeg</li>
|
<li>Added the function FFNoLog which suppresses all messages from ffmpeg</li>
|
||||||
<li>Experimental new TS parsing using Haali's splitter (with bugs)</li>
|
<li>Experimental new TS parsing using Haali's splitter (with bugs)</li>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2008 Karl Blomster
|
// Copyright (c) 2008-2009 Karl Blomster
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -188,9 +188,9 @@ int WriteIndex(const char *IndexFile, FrameIndex *TrackIndices, char *ErrorMsg,
|
||||||
for (unsigned int i = 0; i < IH.Tracks; i++) {
|
for (unsigned int i = 0; i < IH.Tracks; i++) {
|
||||||
int TT = (*TrackIndices)[i].TT;
|
int TT = (*TrackIndices)[i].TT;
|
||||||
Index.write(reinterpret_cast<char *>(&TT), sizeof(TT));
|
Index.write(reinterpret_cast<char *>(&TT), sizeof(TT));
|
||||||
int Num = (*TrackIndices)[i].TB.Num;
|
int64_t Num = (*TrackIndices)[i].TB.Num;
|
||||||
Index.write(reinterpret_cast<char *>(&Num), sizeof(Num));
|
Index.write(reinterpret_cast<char *>(&Num), sizeof(Num));
|
||||||
int Den = (*TrackIndices)[i].TB.Den;
|
int64_t Den = (*TrackIndices)[i].TB.Den;
|
||||||
Index.write(reinterpret_cast<char *>(&Den), sizeof(Den));
|
Index.write(reinterpret_cast<char *>(&Den), sizeof(Den));
|
||||||
size_t Frames = (*TrackIndices)[i].size();
|
size_t Frames = (*TrackIndices)[i].size();
|
||||||
Index.write(reinterpret_cast<char *>(&Frames), sizeof(Frames));
|
Index.write(reinterpret_cast<char *>(&Frames), sizeof(Frames));
|
||||||
|
@ -610,7 +610,7 @@ FrameIndex *MakeIndex(const char *SourceFile, int IndexMask, int DumpMask, const
|
||||||
TrackIndices->Decoder = 0;
|
TrackIndices->Decoder = 0;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < FormatContext->nb_streams; i++)
|
for (unsigned int i = 0; i < FormatContext->nb_streams; i++)
|
||||||
TrackIndices->push_back(FrameInfoVector(FormatContext->streams[i]->time_base.num * 1000,
|
TrackIndices->push_back(FrameInfoVector((int64_t)FormatContext->streams[i]->time_base.num * 1000,
|
||||||
FormatContext->streams[i]->time_base.den,
|
FormatContext->streams[i]->time_base.den,
|
||||||
FormatContext->streams[i]->codec->codec_type));
|
FormatContext->streams[i]->codec->codec_type));
|
||||||
|
|
||||||
|
@ -714,9 +714,9 @@ FrameIndex *ReadIndex(const char *IndexFile, char *ErrorMsg, unsigned MsgSize) {
|
||||||
// Read how many records belong to the current stream
|
// Read how many records belong to the current stream
|
||||||
int TT;
|
int TT;
|
||||||
Index.read(reinterpret_cast<char *>(&TT), sizeof(TT));
|
Index.read(reinterpret_cast<char *>(&TT), sizeof(TT));
|
||||||
int Num;
|
int64_t Num;
|
||||||
Index.read(reinterpret_cast<char *>(&Num), sizeof(Num));
|
Index.read(reinterpret_cast<char *>(&Num), sizeof(Num));
|
||||||
int Den;
|
int64_t Den;
|
||||||
Index.read(reinterpret_cast<char *>(&Den), sizeof(Den));
|
Index.read(reinterpret_cast<char *>(&Den), sizeof(Den));
|
||||||
size_t Frames;
|
size_t Frames;
|
||||||
Index.read(reinterpret_cast<char *>(&Frames), sizeof(Frames));
|
Index.read(reinterpret_cast<char *>(&Frames), sizeof(Frames));
|
||||||
|
@ -789,7 +789,7 @@ FrameInfoVector::FrameInfoVector() {
|
||||||
this->TB.Den = 0;
|
this->TB.Den = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
FrameInfoVector::FrameInfoVector(int Num, int Den, int TT) {
|
FrameInfoVector::FrameInfoVector(int64_t Num, int64_t Den, int TT) {
|
||||||
this->TT = TT;
|
this->TT = TT;
|
||||||
this->TB.Num = Num;
|
this->TB.Num = Num;
|
||||||
this->TB.Den = Den;
|
this->TB.Den = Den;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "ffms.h"
|
#include "ffms.h"
|
||||||
|
|
||||||
#define INDEXVERSION 12
|
#define INDEXVERSION 15
|
||||||
#define INDEXID 0x53920873
|
#define INDEXID 0x53920873
|
||||||
|
|
||||||
struct IndexHeader {
|
struct IndexHeader {
|
||||||
|
@ -46,7 +46,7 @@ public:
|
||||||
int WriteTimecodes(const char *TimecodeFile, char *ErrorMsg, unsigned MsgSize);
|
int WriteTimecodes(const char *TimecodeFile, char *ErrorMsg, unsigned MsgSize);
|
||||||
|
|
||||||
FrameInfoVector();
|
FrameInfoVector();
|
||||||
FrameInfoVector(int Num, int Den, int TT);
|
FrameInfoVector(int64_t Num, int64_t Den, int TT);
|
||||||
};
|
};
|
||||||
|
|
||||||
class FrameIndex : public std::vector<FrameInfoVector> {
|
class FrameIndex : public std::vector<FrameInfoVector> {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2007-2008 Fredrik Mellbin
|
// Copyright (c) 2007-2009 Fredrik Mellbin
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
Loading…
Reference in a new issue