mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-libstb-hal.git
synced 2025-08-26 15:02:43 +02:00
libeplayer3/container_ffmpeg: don't modify AVPacket internals (I don't believe this actually hurts, but better safe than sorry)
Origin commit data
------------------
Branch: master
Commit: 4a4bb1e06f
Author: martii <m4rtii@gmx.de>
Date: 2013-12-15 (Sun, 15 Dec 2013)
------------------
No further description and justification available within origin commit message!
------------------
This commit was generated by Migit
This commit is contained in:
@@ -403,13 +403,15 @@ static void FFMPEGThread(Context_t * context)
|
||||
break; // while
|
||||
}
|
||||
long long int pts;
|
||||
uint8_t *packet_data = packet.data;
|
||||
int packet_size = packet.size;
|
||||
Track_t *videoTrack = NULL;
|
||||
Track_t *audioTrack = NULL;
|
||||
Track_t *subtitleTrack = NULL;
|
||||
Track_t *dvbsubtitleTrack = NULL;
|
||||
Track_t *teletextTrack = NULL;
|
||||
|
||||
context->playback->readCount += packet.size;
|
||||
context->playback->readCount += packet_size;
|
||||
|
||||
int pid = avContext->streams[packet.stream_index]->id;
|
||||
|
||||
@@ -428,7 +430,7 @@ static void FFMPEGThread(Context_t * context)
|
||||
if (context->manager->teletext->Command(context, MANAGER_GET_TRACK, &teletextTrack) < 0)
|
||||
ffmpeg_err("error getting teletext track\n");
|
||||
|
||||
ffmpeg_printf(200, "packet.size %d - index %d\n", packet.size, pid);
|
||||
ffmpeg_printf(200, "packet_size %d - index %d\n", packet_size, pid);
|
||||
|
||||
if (videoTrack && (videoTrack->Id == pid)) {
|
||||
currentVideoPts = videoTrack->pts = pts = calcPts(videoTrack->stream, packet.pts);
|
||||
@@ -439,8 +441,8 @@ static void FFMPEGThread(Context_t * context)
|
||||
|
||||
ffmpeg_printf(200, "VideoTrack index = %d %lld\n", pid, currentVideoPts);
|
||||
|
||||
avOut.data = packet.data;
|
||||
avOut.len = packet.size;
|
||||
avOut.data = packet_data;
|
||||
avOut.len = packet_size;
|
||||
avOut.pts = pts;
|
||||
avOut.extradata = videoTrack->extraData;
|
||||
avOut.extralen = videoTrack->extraSize;
|
||||
@@ -470,8 +472,8 @@ static void FFMPEGThread(Context_t * context)
|
||||
extradata.uBitsPerSample = 16;
|
||||
extradata.bLittleEndian = 1;
|
||||
|
||||
avOut.data = packet.data;
|
||||
avOut.len = packet.size;
|
||||
avOut.data = packet_data;
|
||||
avOut.len = packet_size;
|
||||
avOut.pts = pts;
|
||||
avOut.extradata = (unsigned char *) &extradata;
|
||||
avOut.extralen = sizeof(extradata);
|
||||
@@ -505,7 +507,7 @@ static void FFMPEGThread(Context_t * context)
|
||||
fprintf(stderr, "%s %d: avcodec_open2 failed\n", __func__, __LINE__);
|
||||
}
|
||||
|
||||
while (packet.size > 0) {
|
||||
while (packet_size > 0) {
|
||||
int got_frame = 0;
|
||||
if (!decoded_frame) {
|
||||
if (!(decoded_frame = avcodec_alloc_frame())) {
|
||||
@@ -524,8 +526,8 @@ static void FFMPEGThread(Context_t * context)
|
||||
break;
|
||||
}
|
||||
|
||||
packet.data += len;
|
||||
packet.size -= len;
|
||||
packet_data += len;
|
||||
packet_size -= len;
|
||||
|
||||
if (!got_frame)
|
||||
continue;
|
||||
@@ -622,8 +624,8 @@ static void FFMPEGThread(Context_t * context)
|
||||
} else if (audioTrack->have_aacheader == 1) {
|
||||
ffmpeg_printf(200, "write audio aac\n");
|
||||
|
||||
avOut.data = packet.data;
|
||||
avOut.len = packet.size;
|
||||
avOut.data = packet_data;
|
||||
avOut.len = packet_size;
|
||||
avOut.pts = pts;
|
||||
avOut.extradata = audioTrack->aacbuf;
|
||||
avOut.extralen = audioTrack->aacbuflen;
|
||||
@@ -637,8 +639,8 @@ static void FFMPEGThread(Context_t * context)
|
||||
ffmpeg_err("(aac) writing data to audio device failed\n");
|
||||
#endif
|
||||
} else {
|
||||
avOut.data = packet.data;
|
||||
avOut.len = packet.size;
|
||||
avOut.data = packet_data;
|
||||
avOut.len = packet_size;
|
||||
avOut.pts = pts;
|
||||
avOut.extradata = NULL;
|
||||
avOut.extralen = 0;
|
||||
@@ -673,7 +675,7 @@ static void FFMPEGThread(Context_t * context)
|
||||
/*Hellmaster1024 if the duration is not stored in packet.duration or
|
||||
packet.convergence_duration we need to calculate it any other way, for SSA it is stored in
|
||||
the Text line */
|
||||
duration = getDurationFromSSALine(packet.data);
|
||||
duration = getDurationFromSSALine(packet_data);
|
||||
} else {
|
||||
/* no clue yet */
|
||||
}
|
||||
@@ -719,8 +721,8 @@ static void FFMPEGThread(Context_t * context)
|
||||
|
||||
ffmpeg_printf(10, "videoPts %lld\n", currentVideoPts);
|
||||
|
||||
data.data = packet.data;
|
||||
data.len = packet.size;
|
||||
data.data = packet_data;
|
||||
data.len = packet_size;
|
||||
data.extradata = subtitleTrack->extraData;
|
||||
data.extralen = subtitleTrack->extraSize;
|
||||
data.pts = pts;
|
||||
@@ -730,9 +732,9 @@ static void FFMPEGThread(Context_t * context)
|
||||
} else {
|
||||
/* hopefully native text ;) */
|
||||
|
||||
unsigned char *line = text_to_ass((char *) packet.data, pts / 90,
|
||||
unsigned char *line = text_to_ass((char *) packet_data, pts / 90,
|
||||
duration);
|
||||
ffmpeg_printf(50, "text line is %s\n", (char *) packet.data);
|
||||
ffmpeg_printf(50, "text line is %s\n", (char *) packet_data);
|
||||
ffmpeg_printf(50, "Sub line is %s\n", line);
|
||||
ffmpeg_printf(20, "videoPts %lld %f\n", currentVideoPts, currentVideoPts / 90000.0);
|
||||
SubtitleData_t data;
|
||||
@@ -753,8 +755,8 @@ static void FFMPEGThread(Context_t * context)
|
||||
|
||||
ffmpeg_printf(200, "DvbSubTitle index = %d\n", pid);
|
||||
|
||||
avOut.data = packet.data;
|
||||
avOut.len = packet.size;
|
||||
avOut.data = packet_data;
|
||||
avOut.len = packet_size;
|
||||
avOut.pts = pts;
|
||||
avOut.extradata = NULL;
|
||||
avOut.extralen = 0;
|
||||
@@ -772,8 +774,8 @@ static void FFMPEGThread(Context_t * context)
|
||||
|
||||
ffmpeg_printf(200, "TeleText index = %d\n", pid);
|
||||
|
||||
avOut.data = packet.data;
|
||||
avOut.len = packet.size;
|
||||
avOut.data = packet_data;
|
||||
avOut.len = packet_size;
|
||||
avOut.pts = pts;
|
||||
avOut.extradata = NULL;
|
||||
avOut.extralen = 0;
|
||||
|
Reference in New Issue
Block a user