A method of looping playback of a video file, the method comprising: performing (i) a first file decoding operation on the video file to produce a first video buffer storing a first plurality of video frames and an audio buffer storing a plurality of audio frames and (ii) a second file decoding operation on the video file to produce a second video buffer storing a second plurality of video frames, wherein the first plurality of video frames and the second plurality of video frames are substantially identical, and each of the plurality of audio frames includes audio synchronized with a video frame of the first plurality of video frames and a video frame of the second plurality of video frames; prior to rendering the first plurality of video frames, performing a trimming operation on the end portion of the first plurality of video frames; rendering: (i) the first plurality of video frames of the first video buffer by a GPU of the computing device to produce first video content, the first video content having a beginning portion and an end portion corresponding respectively to a beginning portion of the first plurality of video frames and an end portion of the trimmed first plurality of video frames and (ii) the plurality of the audio frames of the audio buffer to produce audio content, the audio content including beginning audio samples corresponding to the beginning portion of the first video content and end audio samples corresponding to the end portion of the first video content, wherein each of the beginning audio samples and the end audio samples has a respective timestamp; adjusting, based on the trimming operation, the timestamps of the end audio samples to loop the video frames with the audio frames, comprising reassigning the timestamps of the end audio samples to other portions of the video, or stretching the timestamps of the end audio samples out in time over an overlap portion of an end of a first cycle and a beginning of a second cycle of the looping playback of the video file; performing a display operation to display the end portion of the first video content; while the end portion of the first video content is being displayed, rendering, by the GPU of the computing device, the second plurality of video frames of the second video buffer, the second video content having a beginning portion and an end portion corresponding respectively to a beginning portion and an end portion of the second plurality of video frames; performing the display operation to display the beginning portion of the second video content; while the beginning portion of the second video content is being displayed, performing an output operation to output the beginning audio samples and the end audio samples, comprising performing a cross-fade operation by: (i) decreasing a volume of the end audio samples to zero volume as the beginning portion of the second video content is displayed and (ii) increasing a volume of the beginning audio samples from zero volume as the beginning portion of the second video content is displayed. performing (i) a first file decoding operation on the video file to produce a first video buffer storing a first plurality of video frames and an audio buffer storing a plurality of audio frames and (ii) a second file decoding operation on the video file to produce a second video buffer storing a second plurality of video frames, wherein the first plurality of video frames and the second plurality of video frames are substantially identical, and each of the plurality of audio frames includes audio synchronized with a video frame of the first plurality of video frames and a video frame of the second plurality of video frames; prior to rendering the first plurality of video frames, performing a trimming operation on the end portion of the first plurality of video frames; rendering: (i) the first plurality of video frames of the first video buffer by a GPU of the computing device to produce first video content, the first video content having a beginning portion and an end portion corresponding respectively to a beginning portion of the first plurality of video frames and an end portion of the trimmed first plurality of video frames and (ii) the plurality of the audio frames of the audio buffer to produce audio content, the audio content including beginning audio samples corresponding to the beginning portion of the first video content and end audio samples corresponding to the end portion of the first video content, wherein each of the beginning audio samples and the end audio samples has a respective timestamp; adjusting, based on the trimming operation, the timestamps of the end audio samples to loop the video frames with the audio frames, comprising reassigning the timestamps of the end audio samples to other portions of the video, or stretching the timestamps of the end audio samples out in time over an overlap portion of an end of a first cycle and a beginning of a second cycle of the looping playback of the video file; performing a display operation to display the end portion of the first video content; while the end portion of the first video content is being displayed, rendering, by the GPU of the computing device, the second plurality of video frames of the second video buffer, the second video content having a beginning portion and an end portion corresponding respectively to a beginning portion and an end portion of the second plurality of video frames; performing the display operation to display the beginning portion of the second video content;