mirror of
https://github.com/rofafor/vdr-plugin-femon.git
synced 2023-10-10 11:36:53 +00:00
Changed bitrate to bit/s instead of Mbit/s.
This commit is contained in:
parent
6b6169d5f3
commit
7551788969
@ -89,7 +89,7 @@ enum eAudioCodingMode {
|
|||||||
|
|
||||||
typedef struct audio_info {
|
typedef struct audio_info {
|
||||||
eAudioCodec codec; // enum
|
eAudioCodec codec; // enum
|
||||||
double bitrate; // kbit/s or eAudioBitrate
|
double bitrate; // bit/s or eAudioBitrate
|
||||||
int samplingFrequency; // Hz or eAudioSamplingFrequency
|
int samplingFrequency; // Hz or eAudioSamplingFrequency
|
||||||
int channelMode; // eAudioChannelMode
|
int channelMode; // eAudioChannelMode
|
||||||
} audio_info_t;
|
} audio_info_t;
|
||||||
|
120
femonh264.c
120
femonh264.c
@ -229,49 +229,49 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len)
|
|||||||
case 88: // extended profile
|
case 88: // extended profile
|
||||||
switch (level_idc) {
|
switch (level_idc) {
|
||||||
case 10: // level 1.0
|
case 10: // level 1.0
|
||||||
bit_rate = 0.064;
|
bit_rate = 64000;
|
||||||
break;
|
break;
|
||||||
case 11: // level 1b / 1.1
|
case 11: // level 1b / 1.1
|
||||||
bit_rate = constraint_set3_flag ? 0.128 : 0.192;
|
bit_rate = constraint_set3_flag ? 128000 : 192000;
|
||||||
break;
|
break;
|
||||||
case 12: // level 1.2
|
case 12: // level 1.2
|
||||||
bit_rate = 0.384;
|
bit_rate = 384000;
|
||||||
break;
|
break;
|
||||||
case 13: // level 1.3
|
case 13: // level 1.3
|
||||||
bit_rate = 0.768;
|
bit_rate = 768000;
|
||||||
break;
|
break;
|
||||||
case 20: // level 2.0
|
case 20: // level 2.0
|
||||||
bit_rate = 2;
|
bit_rate = 2000000;
|
||||||
break;
|
break;
|
||||||
case 21: // level 2.1
|
case 21: // level 2.1
|
||||||
bit_rate = 4;
|
bit_rate = 4000000;
|
||||||
break;
|
break;
|
||||||
case 22: // level 2.2
|
case 22: // level 2.2
|
||||||
bit_rate = 4;
|
bit_rate = 4000000;
|
||||||
break;
|
break;
|
||||||
case 30: // level 3.0
|
case 30: // level 3.0
|
||||||
bit_rate = 10;
|
bit_rate = 10000000;
|
||||||
break;
|
break;
|
||||||
case 31: // level 3.1
|
case 31: // level 3.1
|
||||||
bit_rate = 14;
|
bit_rate = 14000000;
|
||||||
break;
|
break;
|
||||||
case 32: // level 3.2
|
case 32: // level 3.2
|
||||||
bit_rate = 20;
|
bit_rate = 20000000;
|
||||||
break;
|
break;
|
||||||
case 40: // level 4.0
|
case 40: // level 4.0
|
||||||
bit_rate = 20;
|
bit_rate = 20000000;
|
||||||
break;
|
break;
|
||||||
case 41: // level 4.1
|
case 41: // level 4.1
|
||||||
bit_rate = 50;
|
bit_rate = 50000000;
|
||||||
break;
|
break;
|
||||||
case 42: // level 4.2
|
case 42: // level 4.2
|
||||||
bit_rate = 50;
|
bit_rate = 50000000;
|
||||||
break;
|
break;
|
||||||
case 50: // level 5.0
|
case 50: // level 5.0
|
||||||
bit_rate = 135;
|
bit_rate = 135000000;
|
||||||
break;
|
break;
|
||||||
case 51: // level 5.1
|
case 51: // level 5.1
|
||||||
bit_rate = 240;
|
bit_rate = 240000000;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -280,49 +280,49 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len)
|
|||||||
case 100: // high profile
|
case 100: // high profile
|
||||||
switch (level_idc) {
|
switch (level_idc) {
|
||||||
case 10: // level 1.0
|
case 10: // level 1.0
|
||||||
bit_rate = 0.080;
|
bit_rate = 80000;
|
||||||
break;
|
break;
|
||||||
case 11: // level 1b / 1.1
|
case 11: // level 1b / 1.1
|
||||||
bit_rate = constraint_set3_flag ? 0.160 : 0.240;
|
bit_rate = constraint_set3_flag ? 160000 : 240000;
|
||||||
break;
|
break;
|
||||||
case 12: // level 1.2
|
case 12: // level 1.2
|
||||||
bit_rate = 0.480;
|
bit_rate = 480000;
|
||||||
break;
|
break;
|
||||||
case 13: // level 1.3
|
case 13: // level 1.3
|
||||||
bit_rate = 0.960;
|
bit_rate = 960000;
|
||||||
break;
|
break;
|
||||||
case 20: // level 2.0
|
case 20: // level 2.0
|
||||||
bit_rate = 2.5;
|
bit_rate = 2500000;
|
||||||
break;
|
break;
|
||||||
case 21: // level 2.1
|
case 21: // level 2.1
|
||||||
bit_rate = 5;
|
bit_rate = 5000000;
|
||||||
break;
|
break;
|
||||||
case 22: // level 2.2
|
case 22: // level 2.2
|
||||||
bit_rate = 5;
|
bit_rate = 5000000;
|
||||||
break;
|
break;
|
||||||
case 30: // level 3.0
|
case 30: // level 3.0
|
||||||
bit_rate = 12.5;
|
bit_rate = 12500000;
|
||||||
break;
|
break;
|
||||||
case 31: // level 3.1
|
case 31: // level 3.1
|
||||||
bit_rate = 17.5;
|
bit_rate = 17500000;
|
||||||
break;
|
break;
|
||||||
case 32: // level 3.2
|
case 32: // level 3.2
|
||||||
bit_rate = 25;
|
bit_rate = 25000000;
|
||||||
break;
|
break;
|
||||||
case 40: // level 4.0
|
case 40: // level 4.0
|
||||||
bit_rate = 25;
|
bit_rate = 25000000;
|
||||||
break;
|
break;
|
||||||
case 41: // level 4.1
|
case 41: // level 4.1
|
||||||
bit_rate = 62.5;
|
bit_rate = 62500000;
|
||||||
break;
|
break;
|
||||||
case 42: // level 4.2
|
case 42: // level 4.2
|
||||||
bit_rate = 62.5;
|
bit_rate = 62500000;
|
||||||
break;
|
break;
|
||||||
case 50: // level 5.0
|
case 50: // level 5.0
|
||||||
bit_rate = 168.75;
|
bit_rate = 168750000;
|
||||||
break;
|
break;
|
||||||
case 51: // level 5.1
|
case 51: // level 5.1
|
||||||
bit_rate = 300;
|
bit_rate = 300000000;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -331,49 +331,49 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len)
|
|||||||
case 110: // high 10 profile
|
case 110: // high 10 profile
|
||||||
switch (level_idc) {
|
switch (level_idc) {
|
||||||
case 10: // level 1.0
|
case 10: // level 1.0
|
||||||
bit_rate = 0.192;
|
bit_rate = 192000;
|
||||||
break;
|
break;
|
||||||
case 11: // level 1b / 1.1
|
case 11: // level 1b / 1.1
|
||||||
bit_rate = constraint_set3_flag ? 0.384 : 0.576;
|
bit_rate = constraint_set3_flag ? 384000 : 576000;
|
||||||
break;
|
break;
|
||||||
case 12: // level 1.2
|
case 12: // level 1.2
|
||||||
bit_rate = 0.1152;
|
bit_rate = 115200;
|
||||||
break;
|
break;
|
||||||
case 13: // level 1.3
|
case 13: // level 1.3
|
||||||
bit_rate = 2.304;
|
bit_rate = 2304000;
|
||||||
break;
|
break;
|
||||||
case 20: // level 2.0
|
case 20: // level 2.0
|
||||||
bit_rate = 6;
|
bit_rate = 6000000;
|
||||||
break;
|
break;
|
||||||
case 21: // level 2.1
|
case 21: // level 2.1
|
||||||
bit_rate = 12;
|
bit_rate = 12000000;
|
||||||
break;
|
break;
|
||||||
case 22: // level 2.2
|
case 22: // level 2.2
|
||||||
bit_rate = 12;
|
bit_rate = 12000000;
|
||||||
break;
|
break;
|
||||||
case 30: // level 3.0
|
case 30: // level 3.0
|
||||||
bit_rate = 30;
|
bit_rate = 30000000;
|
||||||
break;
|
break;
|
||||||
case 31: // level 3.1
|
case 31: // level 3.1
|
||||||
bit_rate = 42;
|
bit_rate = 42000000;
|
||||||
break;
|
break;
|
||||||
case 32: // level 3.2
|
case 32: // level 3.2
|
||||||
bit_rate = 60;
|
bit_rate = 60000000;
|
||||||
break;
|
break;
|
||||||
case 40: // level 4.0
|
case 40: // level 4.0
|
||||||
bit_rate = 60;
|
bit_rate = 60000000;
|
||||||
break;
|
break;
|
||||||
case 41: // level 4.1
|
case 41: // level 4.1
|
||||||
bit_rate = 150;
|
bit_rate = 150000000;
|
||||||
break;
|
break;
|
||||||
case 42: // level 4.2
|
case 42: // level 4.2
|
||||||
bit_rate = 150;
|
bit_rate = 150000000;
|
||||||
break;
|
break;
|
||||||
case 50: // level 5.0
|
case 50: // level 5.0
|
||||||
bit_rate = 405;
|
bit_rate = 405000000;
|
||||||
break;
|
break;
|
||||||
case 51: // level 5.1
|
case 51: // level 5.1
|
||||||
bit_rate = 720;
|
bit_rate = 720000000;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -383,49 +383,49 @@ int cFemonH264::parseSPS(const uint8_t *buf, int len)
|
|||||||
case 144: // high 4:4:4 profile
|
case 144: // high 4:4:4 profile
|
||||||
switch (level_idc) {
|
switch (level_idc) {
|
||||||
case 10: // level 1.0
|
case 10: // level 1.0
|
||||||
bit_rate = 0.256;
|
bit_rate = 256000;
|
||||||
break;
|
break;
|
||||||
case 11: // level 1b / 1.1
|
case 11: // level 1b / 1.1
|
||||||
bit_rate = constraint_set3_flag ? 0.512 : 0.768;
|
bit_rate = constraint_set3_flag ? 512000 : 768000;
|
||||||
break;
|
break;
|
||||||
case 12: // level 1.2
|
case 12: // level 1.2
|
||||||
bit_rate = 1.536;
|
bit_rate = 1536000;
|
||||||
break;
|
break;
|
||||||
case 13: // level 1.3
|
case 13: // level 1.3
|
||||||
bit_rate = 3.072;
|
bit_rate = 3072000;
|
||||||
break;
|
break;
|
||||||
case 20: // level 2.0
|
case 20: // level 2.0
|
||||||
bit_rate = 8;
|
bit_rate = 8000000;
|
||||||
break;
|
break;
|
||||||
case 21: // level 2.1
|
case 21: // level 2.1
|
||||||
bit_rate = 16;
|
bit_rate = 16000000;
|
||||||
break;
|
break;
|
||||||
case 22: // level 2.2
|
case 22: // level 2.2
|
||||||
bit_rate = 16;
|
bit_rate = 16000000;
|
||||||
break;
|
break;
|
||||||
case 30: // level 3.0
|
case 30: // level 3.0
|
||||||
bit_rate = 40;
|
bit_rate = 40000000;
|
||||||
break;
|
break;
|
||||||
case 31: // level 3.1
|
case 31: // level 3.1
|
||||||
bit_rate = 56;
|
bit_rate = 56000000;
|
||||||
break;
|
break;
|
||||||
case 32: // level 3.2
|
case 32: // level 3.2
|
||||||
bit_rate = 80;
|
bit_rate = 80000000;
|
||||||
break;
|
break;
|
||||||
case 40: // level 4.0
|
case 40: // level 4.0
|
||||||
bit_rate = 80;
|
bit_rate = 80000000;
|
||||||
break;
|
break;
|
||||||
case 41: // level 4.1
|
case 41: // level 4.1
|
||||||
bit_rate = 200;
|
bit_rate = 200000000;
|
||||||
break;
|
break;
|
||||||
case 42: // level 4.2
|
case 42: // level 4.2
|
||||||
bit_rate = 200;
|
bit_rate = 200000000;
|
||||||
break;
|
break;
|
||||||
case 50: // level 5.0
|
case 50: // level 5.0
|
||||||
bit_rate = 540;
|
bit_rate = 540000000;
|
||||||
break;
|
break;
|
||||||
case 51: // level 5.1
|
case 51: // level 5.1
|
||||||
bit_rate = 960;
|
bit_rate = 960000000;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
36
femonh264.h
36
femonh264.h
@ -19,29 +19,29 @@ private:
|
|||||||
NAL_END_SEQ = 0x0A // End of Sequence
|
NAL_END_SEQ = 0x0A // End of Sequence
|
||||||
};
|
};
|
||||||
|
|
||||||
cFemonVideoIf *m_VideoHandler;
|
cFemonVideoIf *m_VideoHandler;
|
||||||
uint32_t m_Width;
|
uint32_t m_Width;
|
||||||
uint32_t m_Height;
|
uint32_t m_Height;
|
||||||
eVideoAspectRatio m_AspectRatio;
|
eVideoAspectRatio m_AspectRatio;
|
||||||
eVideoFormat m_Format;
|
eVideoFormat m_Format;
|
||||||
double m_FrameRate;
|
double m_FrameRate;
|
||||||
double m_BitRate;
|
double m_BitRate;
|
||||||
eVideoScan m_Scan;
|
eVideoScan m_Scan;
|
||||||
bool m_CpbDpbDelaysPresentFlag;
|
bool m_CpbDpbDelaysPresentFlag;
|
||||||
bool m_PicStructPresentFlag;
|
bool m_PicStructPresentFlag;
|
||||||
bool m_FrameMbsOnlyFlag;
|
bool m_FrameMbsOnlyFlag;
|
||||||
bool m_MbAdaptiveFrameFieldFlag;
|
bool m_MbAdaptiveFrameFieldFlag;
|
||||||
uint32_t m_TimeOffsetLength;
|
uint32_t m_TimeOffsetLength;
|
||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
const uint8_t *nextStartCode(const uint8_t *start, const uint8_t *end);
|
const uint8_t *nextStartCode(const uint8_t *start, const uint8_t *end);
|
||||||
int nalUnescape(uint8_t *dst, const uint8_t *src, int len);
|
int nalUnescape(uint8_t *dst, const uint8_t *src, int len);
|
||||||
int parseSPS(const uint8_t *buf, int len);
|
int parseSPS(const uint8_t *buf, int len);
|
||||||
int parseSEI(const uint8_t *buf, int len);
|
int parseSEI(const uint8_t *buf, int len);
|
||||||
|
|
||||||
static const eVideoAspectRatio s_AspectRatios[];
|
static const eVideoAspectRatio s_AspectRatios[];
|
||||||
static const eVideoFormat s_VideoFormats[];
|
static const eVideoFormat s_VideoFormats[];
|
||||||
static const uint8_t s_SeiNumClockTsTable[9];
|
static const uint8_t s_SeiNumClockTsTable[9];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
cFemonH264(cFemonVideoIf *videohandler);
|
cFemonH264(cFemonVideoIf *videohandler);
|
||||||
|
@ -66,7 +66,7 @@ typedef struct video_info {
|
|||||||
int width; // pixels
|
int width; // pixels
|
||||||
int height; // pixels
|
int height; // pixels
|
||||||
double frameRate; // Hz
|
double frameRate; // Hz
|
||||||
double bitrate; // Mbit/s
|
double bitrate; // bit/s
|
||||||
} video_info_t;
|
} video_info_t;
|
||||||
|
|
||||||
class cFemonVideoIf {
|
class cFemonVideoIf {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user