Revert "win-dshow: Add LGP timestamp fix"

This reverts commit 32f60d07a3dc359d97873ca4f24d8400a5fc251f.
This commit is contained in:
jp9000 2017-03-03 16:46:52 -08:00
parent 4d0c7f7fba
commit 084e9daf88
3 changed files with 3 additions and 48 deletions

View File

@ -16,8 +16,6 @@
******************************************************************************/
#include "ffmpeg-decode.h"
#include <util/util_uint128.h>
#include <util/base.h>
#include <obs-avc.h>
int ffmpeg_decode_init(struct ffmpeg_decode *decode, enum AVCodecID id)
@ -109,33 +107,8 @@ static inline void copy_data(struct ffmpeg_decode *decode, uint8_t *data,
memcpy(decode->packet_buffer, data, size);
}
static void do_idiotic_lgp_audio_packet_realignment(
struct ffmpeg_decode *decode, long long *ts)
{
uint64_t new_ts = (uint64_t)*ts;
util_uint128_t u128;
if (!decode->lgp_started) {
decode->lgp_start_ts = new_ts;
decode->lgp_next_expected_ts = new_ts;
decode->lgp_started = true;
}
if (llabs(decode->lgp_next_expected_ts - new_ts) < 3000000ULL) {
*ts = (long long)decode->lgp_next_expected_ts;
} else {
decode->lgp_start_ts = new_ts;
decode->lgp_frames_since_start = 0;
}
decode->lgp_frames_since_start += (uint64_t)decode->frame->nb_samples;
u128 = util_mul64_64(decode->lgp_frames_since_start, 10000000ULL);
decode->lgp_next_expected_ts = decode->lgp_start_ts +
util_div128_32(u128, (uint32_t)decode->frame->sample_rate).low;
}
int ffmpeg_decode_audio(struct ffmpeg_decode *decode,
uint8_t *data, size_t size, long long *ts,
uint8_t *data, size_t size,
struct obs_source_audio *audio,
bool *got_output)
{
@ -175,9 +148,6 @@ int ffmpeg_decode_audio(struct ffmpeg_decode *decode,
if (audio->format == AUDIO_FORMAT_UNKNOWN)
return 0;
if (decode->fix_braindead_lgp_audio_packet_stupidity)
do_idiotic_lgp_audio_packet_realignment(decode, ts);
*got_output = true;
return len;
}

View File

@ -44,19 +44,13 @@ struct ffmpeg_decode {
uint8_t *packet_buffer;
size_t packet_size;
uint64_t lgp_start_ts;
uint64_t lgp_frames_since_start;
uint64_t lgp_next_expected_ts;
bool lgp_started;
bool fix_braindead_lgp_audio_packet_stupidity;
};
extern int ffmpeg_decode_init(struct ffmpeg_decode *decode, enum AVCodecID id);
extern void ffmpeg_decode_free(struct ffmpeg_decode *decode);
extern int ffmpeg_decode_audio(struct ffmpeg_decode *decode,
uint8_t *data, size_t size, long long *ts,
uint8_t *data, size_t size,
struct obs_source_audio *audio,
bool *got_output);

View File

@ -116,7 +116,6 @@ public:
inline ~Decoder() {ffmpeg_decode_free(&decode);}
inline operator ffmpeg_decode*() {return &decode;}
inline ffmpeg_decode *operator->() {return &decode;}
};
class CriticalSection {
@ -508,18 +507,10 @@ void DShowInput::OnEncodedAudioData(enum AVCodecID id,
blog(LOG_WARNING, "Could not initialize audio decoder");
return;
}
if (videoConfig.name.find(L"C875") != std::string::npos ||
videoConfig.name.find(L"C835") != std::string::npos) {
audio_decoder->fix_braindead_lgp_audio_packet_stupidity
= true;
blog(LOG_INFO, "Oh great, an LGP was detected. "
"How wonderful. I'm just ecstatic.");
}
}
bool got_output;
int len = ffmpeg_decode_audio(audio_decoder, data, size, &ts,
int len = ffmpeg_decode_audio(audio_decoder, data, size,
&audio, &got_output);
if (len < 0) {
blog(LOG_WARNING, "Error decoding audio");