0

我想了解HTC Evo 3D的3D Display的工作原理;但是,代码和 HTCDev 的教程对此没有帮助。据说标头中的 SEI FPA 位会覆盖手动给出的选择,例如:

public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) {
    holder = surfaceholder;
    enableS3D(true, holder.getSurface()); // note SEI FPA flag in content
                                          // overrides this
}

播放视频代码:

private void playVideo() {
    release();
    fileName = "HTCDemo.mp4";
    try {
        mediaPlayer = new MediaPlayer();
        final AssetFileDescriptor afd = getAssets().openFd(fileName);
        mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),
                afd.getLength());
        mediaPlayer.setDisplay(holder);
        mediaPlayer.prepare();
        mediaPlayer.setOnPreparedListener(this);
        mediaPlayer.setOnVideoSizeChangedListener(this);
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    } catch (Exception e) {
        Log.e(TAG, Log.getStackTraceString(e));
    }
}

在这一点上,我无法跟踪它在标题中的 SEI FPA 位的位置。我需要帮助来显示必要的代码部分。提前致谢。

4

1 回答 1

1

您是否需要在标头本身中解析 SEI FPA 位?这超出了这个 API 的范围。如前所述,编解码器对此进行解析以启用(并覆盖)S3D 设置。

在概述中,提到了如何使用 x264 等 3rd 方工具将此位添加到现有内容中。

如果这是您在运行时需要做的,我建议您查看 x264 的代码以帮助解析文件头。

于 2012-07-31T19:39:46.950 回答