diff --git a/libeplayer3/container/container_ffmpeg.c b/libeplayer3/container/container_ffmpeg.c index 13d47ea..3bfa1de 100644 --- a/libeplayer3/container/container_ffmpeg.c +++ b/libeplayer3/container/container_ffmpeg.c @@ -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;