Package net.pms.io

Examples of net.pms.io.OutputParams


      for (int i = 5; i <= 13; i++) {
        args[i] = "-an";
      }
    }

    OutputParams params = new OutputParams(configuration);
    params.maxBufferSize = 1;
    params.stdin = media.getPush();
    params.noexitcheck = true; // not serious if anything happens during the thumbnailer

    // true: consume stderr on behalf of the caller i.e. parse()
View Full Code Here


    String frameName = "" + media.hashCode();
    frameName = "mplayer_thumbs:subdirs=\"" + frameName + "\"";
    frameName = frameName.replace(',', '_');
    args[12] = "jpeg:outdir=" + frameName;
    args[13] = "-nosound";
    OutputParams params = new OutputParams(configuration);
    params.workDir = configuration.getTempFolder();
    params.maxBufferSize = 1;
    params.stdin = media.getPush();
    params.log = true;
    params.noexitcheck = true; // not serious if anything happens during the thumbnailer
View Full Code Here

    cmdArray[11] = "-an";
    cmdArray[12] = "-y";
    cmdArray[13] = "pipe:";

    byte[][] returnData = new byte[2][];
    OutputParams params = new OutputParams(configuration);
    params.maxBufferSize = 1;
    params.stdin = f.getPush();

    final ProcessWrapperImpl pw = new ProcessWrapperImpl(cmdArray, params);
View Full Code Here

        ffVideoPipe.getInputPipe()
      };

      videoType = "V_MPEG4/ISO/AVC";

      OutputParams ffparams = new OutputParams(configuration);
      ffparams.maxBufferSize = 1;
      ffVideo = new ProcessWrapperImpl(ffmpegLPCMextract, ffparams);

      if (
        filename.toLowerCase().endsWith(".flac") &&
        media.getFirstAudioTrack().getBitsperSample() >= 24 &&
        media.getFirstAudioTrack().getSampleRate() % 48000 == 0
      ) {
        ffAudioPipe = new PipeIPCProcess[1];
        ffAudioPipe[0] = new PipeIPCProcess(System.currentTimeMillis() + "flacaudio", System.currentTimeMillis() + "audioout", false, true);

        String[] flacCmd = new String[] {
          configuration.getFlacPath(),
          "--output-name=" + ffAudioPipe[0].getInputPipe(),
          "-d",
          "-f",
          "-F",
          filename
        };

        ffparams = new OutputParams(configuration);
        ffparams.maxBufferSize = 1;
        ffAudio = new ProcessWrapperImpl[1];
        ffAudio[0] = new ProcessWrapperImpl(flacCmd, ffparams);
      } else {
        ffAudioPipe = new PipeIPCProcess[1];
        ffAudioPipe[0] = new PipeIPCProcess(System.currentTimeMillis() + "mlpaudio", System.currentTimeMillis() + "audioout", false, true);
        String depth = "pcm_s16le";
        String rate = "48000";

        if (media.getFirstAudioTrack().getBitsperSample() >= 24) {
          depth = "pcm_s24le";
        }

        if (media.getFirstAudioTrack().getSampleRate() > 48000) {
          rate = "" + media.getFirstAudioTrack().getSampleRate();
        }

        String[] flacCmd = new String[] {
          configuration.getFfmpegPath(),
          "-i", filename,
          "-ar", rate,
          "-f", "wav",
          "-acodec", depth,
          "-y",
          ffAudioPipe[0].getInputPipe()
        };

        ffparams = new OutputParams(configuration);
        ffparams.maxBufferSize = 1;
        ffAudio = new ProcessWrapperImpl[1];
        ffAudio[0] = new ProcessWrapperImpl(flacCmd, ffparams);
      }
    } else {
      params.waitbeforestart = 5000;
      params.manageFastStart();

      String mencoderPath = configuration.getMencoderPath();

      ffVideoPipe = new PipeIPCProcess(System.currentTimeMillis() + "ffmpegvideo", System.currentTimeMillis() + "videoout", false, true);

      // Special handling for evo files
      String evoValue1 = "-quiet";
      String evoValue2 = "-quiet";
      if (filename.toLowerCase().endsWith(".evo")) {
        evoValue1 = "-psprobe";
        evoValue2 = "1000000";
      }

      String[] ffmpegLPCMextract = new String[] {
        mencoderPath,
        "-ss", params.timeseek > 0 ? "" + params.timeseek : "0",
        params.stdin != null ? "-" : filename,
        evoValue1, evoValue2,
        "-really-quiet",
        "-msglevel", "statusline=2",
        "-ovc", "copy",
        "-nosound",
        "-mc", "0",
        "-noskip",
        "-of", "rawvideo",
        "-o", ffVideoPipe.getInputPipe()
      };

      InputFile newInput = new InputFile();
      newInput.setFilename(filename);
      newInput.setPush(params.stdin);

      /**
       * Note: This logic is weird; on one hand we check if the renderer requires videos to be Level 4.1 or below, but then
       * the other function allows the video to exceed those limits.
       * In reality this won't cause problems since renderers typically don't support above 4.1 anyway - nor are many
       * videos encoded higher than that either - but it's worth acknowledging the logic discrepancy.
       */
      if (!media.isVideoWithinH264LevelLimits(newInput, params.mediaRenderer) && params.mediaRenderer.isH264Level41Limited()) {
        LOGGER.info("The video will not play or will show a black screen");
      }

      if (media.getH264AnnexB() != null && media.getH264AnnexB().length > 0) {
        StreamModifier sm = new StreamModifier();
        sm.setHeader(media.getH264AnnexB());
        sm.setH264AnnexB(true);
        ffVideoPipe.setModifier(sm);
      }

      OutputParams ffparams = new OutputParams(configuration);
      ffparams.maxBufferSize = 1;
      ffparams.stdin = params.stdin;
      ffVideo = new ProcessWrapperImpl(ffmpegLPCMextract, ffparams);

      int numAudioTracks = 1;

      if (media.getAudioTracksList() != null && media.getAudioTracksList().size() > 1 && configuration.isMuxAllAudioTracks()) {
        numAudioTracks = media.getAudioTracksList().size();
      }

      boolean singleMediaAudio = media.getAudioTracksList().size() <= 1;

      if (params.aid != null) {
        boolean ac3Remux;
        boolean dtsRemux;
        boolean encodedAudioPassthrough;
        boolean pcm;

        if (numAudioTracks <= 1) {
          ffAudioPipe = new PipeIPCProcess[numAudioTracks];
          ffAudioPipe[0] = new PipeIPCProcess(System.currentTimeMillis() + "ffmpegaudio01", System.currentTimeMillis() + "audioout", false, true);

          /**
           * Disable AC3 remux for stereo tracks with 384 kbits bitrate and PS3 renderer (PS3 FW bug?)
           *
           * Commented out until we can find a way to detect when a video has an audio track that switches from 2 to 6 channels
           * because MEncoder can't handle those files, which are very common these days.
          boolean ps3_and_stereo_and_384_kbits = params.aid != null &&
            (params.mediaRenderer.isPS3() && params.aid.getAudioProperties().getNumberOfChannels() == 2) &&
            (params.aid.getBitRate() > 370000 && params.aid.getBitRate() < 400000);
           */

          encodedAudioPassthrough = configuration.isEncodedAudioPassthrough() && params.aid.isNonPCMEncodedAudio() && params.mediaRenderer.isWrapEncodedAudioIntoPCM();
          ac3Remux = params.aid.isAC3() && configuration.isAudioRemuxAC3() && !encodedAudioPassthrough;
          dtsRemux = configuration.isAudioEmbedDtsInPcm() && params.aid.isDTS() && params.mediaRenderer.isDTSPlayable() && !encodedAudioPassthrough;

          pcm = configuration.isAudioUsePCM() &&
            media.isValidForLPCMTranscoding() &&
            (
              params.aid.isLossless() ||
              (params.aid.isDTS() && params.aid.getAudioProperties().getNumberOfChannels() <= 6) ||
              params.aid.isTrueHD() ||
              (
                !configuration.isMencoderUsePcmForHQAudioOnly() &&
                (
                  params.aid.isAC3() ||
                  params.aid.isMP3() ||
                  params.aid.isAAC() ||
                  params.aid.isVorbis() ||
                  // params.aid.isWMA() ||
                  params.aid.isMpegAudio()
                )
              )
            ) && params.mediaRenderer.isLPCMPlayable();

          int channels;
          if (ac3Remux) {
            channels = params.aid.getAudioProperties().getNumberOfChannels(); // AC-3 remux
          } else if (dtsRemux || encodedAudioPassthrough) {
            channels = 2;
          } else if (pcm) {
            channels = params.aid.getAudioProperties().getNumberOfChannels();
          } else {
            channels = configuration.getAudioChannelCount(); // 5.1 max for AC-3 encoding
          }

          if (!ac3Remux && (dtsRemux || pcm || encodedAudioPassthrough)) {
            // DTS remux or LPCM
            StreamModifier sm = new StreamModifier();
            sm.setPcm(pcm);
            sm.setDtsEmbed(dtsRemux);
            sm.setEncodedAudioPassthrough(encodedAudioPassthrough);
            sm.setNbChannels(channels);
            sm.setSampleFrequency(params.aid.getSampleRate() < 48000 ? 48000 : params.aid.getSampleRate());
            sm.setBitsPerSample(16);

            String mixer = null;

            if (pcm && !dtsRemux && !encodedAudioPassthrough) {
              mixer = getLPCMChannelMappingForMencoder(params.aid);
            }

            ffmpegLPCMextract = new String[] {
              mencoderPath,
              "-ss", params.timeseek > 0 ? "" + params.timeseek : "0",
              params.stdin != null ? "-" : filename,
              evoValue1, evoValue2,
              "-really-quiet",
              "-msglevel", "statusline=2",
              "-channels", "" + sm.getNbChannels(),
              "-ovc", "copy",
              "-of", "rawaudio",
              "-mc", sm.isDtsEmbed() || sm.isEncodedAudioPassthrough() ? "0.1" : "0",
              "-noskip",
              "-oac", sm.isDtsEmbed() || sm.isEncodedAudioPassthrough() ? "copy" : "pcm",
              isNotBlank(mixer) ? "-af" : "-quiet", isNotBlank(mixer) ? mixer : "-quiet",
              singleMediaAudio ? "-quiet" : "-aid", singleMediaAudio ? "-quiet" : ("" + params.aid.getId()),
              "-srate", "48000",
              "-o", ffAudioPipe[0].getInputPipe()
            };

            // Use PCM trick when media renderer does not support DTS in MPEG
            if (!params.mediaRenderer.isMuxDTSToMpeg()) {
              ffAudioPipe[0].setModifier(sm);
            }
          } else {
            // AC-3 remux or encoding
            ffmpegLPCMextract = new String[] {
              mencoderPath,
              "-ss", params.timeseek > 0 ? "" + params.timeseek : "0",
              params.stdin != null ? "-" : filename,
              evoValue1, evoValue2,
              "-really-quiet",
              "-msglevel", "statusline=2",
              "-channels", "" + channels,
              "-ovc", "copy",
              "-of", "rawaudio",
              "-mc", "0",
              "-noskip",
              "-oac", (ac3Remux) ? "copy" : "lavc",
              params.aid.isAC3() ? "-fafmttag" : "-quiet", params.aid.isAC3() ? "0x2000" : "-quiet",
              "-lavcopts", "acodec=" + (configuration.isMencoderAc3Fixed() ? "ac3_fixed" : "ac3") + ":abitrate=" + CodecUtil.getAC3Bitrate(configuration, params.aid),
              "-af", "lavcresample=48000",
              "-srate", "48000",
              singleMediaAudio ? "-quiet" : "-aid", singleMediaAudio ? "-quiet" : ("" + params.aid.getId()),
              "-o", ffAudioPipe[0].getInputPipe()
            };
          }

          ffparams = new OutputParams(configuration);
          ffparams.maxBufferSize = 1;
          ffparams.stdin = params.stdin;
          ffAudio = new ProcessWrapperImpl[numAudioTracks];
          ffAudio[0] = new ProcessWrapperImpl(ffmpegLPCMextract, ffparams);
        } else {
          ffAudioPipe = new PipeIPCProcess[numAudioTracks];
          ffAudio = new ProcessWrapperImpl[numAudioTracks];
          for (int i = 0; i < media.getAudioTracksList().size(); i++) {
            DLNAMediaAudio audio = media.getAudioTracksList().get(i);
            ffAudioPipe[i] = new PipeIPCProcess(System.currentTimeMillis() + "ffmpeg" + i, System.currentTimeMillis() + "audioout" + i, false, true);

            /**
             * Disable AC3 remux for stereo tracks with 384 kbits bitrate and PS3 renderer (PS3 FW bug?)
             *
             * Commented out until we can find a way to detect when a video has an audio track that switches from 2 to 6 channels
             * because MEncoder can't handle those files, which are very common these days.
            boolean ps3_and_stereo_and_384_kbits = params.aid != null &&
              (params.mediaRenderer.isPS3() && params.aid.getAudioProperties().getNumberOfChannels() == 2) &&
              (params.aid.getBitRate() > 370000 && params.aid.getBitRate() < 400000);
             */

            encodedAudioPassthrough = configuration.isEncodedAudioPassthrough() && params.aid.isNonPCMEncodedAudio() && params.mediaRenderer.isWrapEncodedAudioIntoPCM();
            ac3Remux = audio.isAC3() && configuration.isAudioRemuxAC3() && !encodedAudioPassthrough;
            dtsRemux = configuration.isAudioEmbedDtsInPcm() && audio.isDTS() && params.mediaRenderer.isDTSPlayable() && !encodedAudioPassthrough;

            pcm = configuration.isAudioUsePCM() &&
              media.isValidForLPCMTranscoding() &&
              (
                audio.isLossless() ||
                (audio.isDTS() && audio.getAudioProperties().getNumberOfChannels() <= 6) ||
                audio.isTrueHD() ||
                (
                  !configuration.isMencoderUsePcmForHQAudioOnly() &&
                  (
                    audio.isAC3() ||
                    audio.isMP3() ||
                    audio.isAAC() ||
                    audio.isVorbis() ||
                    // audio.isWMA() ||
                    audio.isMpegAudio()
                  )
                )
              ) && params.mediaRenderer.isLPCMPlayable();

            int channels;
            if (ac3Remux) {
              channels = audio.getAudioProperties().getNumberOfChannels(); // AC-3 remux
            } else if (dtsRemux || encodedAudioPassthrough) {
              channels = 2;
            } else if (pcm) {
              channels = audio.getAudioProperties().getNumberOfChannels();
            } else {
              channels = configuration.getAudioChannelCount(); // 5.1 max for AC-3 encoding
            }

            if (!ac3Remux && (dtsRemux || pcm || encodedAudioPassthrough)) {
              // DTS remux or LPCM
              StreamModifier sm = new StreamModifier();
              sm.setPcm(pcm);
              sm.setDtsEmbed(dtsRemux);
              sm.setEncodedAudioPassthrough(encodedAudioPassthrough);
              sm.setNbChannels(channels);
              sm.setSampleFrequency(audio.getSampleRate() < 48000 ? 48000 : audio.getSampleRate());
              sm.setBitsPerSample(16);
              if (!params.mediaRenderer.isMuxDTSToMpeg()) {
                ffAudioPipe[i].setModifier(sm);
              }

              String mixer = null;
              if (pcm && !dtsRemux && !encodedAudioPassthrough) {
                mixer = getLPCMChannelMappingForMencoder(audio);
              }

              ffmpegLPCMextract = new String[]{
                mencoderPath,
                "-ss", params.timeseek > 0 ? "" + params.timeseek : "0",
                params.stdin != null ? "-" : filename,
                evoValue1, evoValue2,
                "-really-quiet",
                "-msglevel", "statusline=2",
                "-channels", "" + sm.getNbChannels(),
                "-ovc", "copy",
                "-of", "rawaudio",
                "-mc", sm.isDtsEmbed() || sm.isEncodedAudioPassthrough() ? "0.1" : "0",
                "-noskip",
                "-oac", sm.isDtsEmbed() || sm.isEncodedAudioPassthrough() ? "copy" : "pcm",
                isNotBlank(mixer) ? "-af" : "-quiet", isNotBlank(mixer) ? mixer : "-quiet",
                singleMediaAudio ? "-quiet" : "-aid", singleMediaAudio ? "-quiet" : ("" + audio.getId()),
                "-srate", "48000",
                "-o", ffAudioPipe[i].getInputPipe()
              };
            } else {
              // AC-3 remux or encoding
              ffmpegLPCMextract = new String[]{
                mencoderPath,
                "-ss", params.timeseek > 0 ? "" + params.timeseek : "0",
                params.stdin != null ? "-" : filename,
                evoValue1, evoValue2,
                "-really-quiet",
                "-msglevel", "statusline=2",
                "-channels", "" + channels,
                "-ovc", "copy",
                "-of", "rawaudio",
                "-mc", "0",
                "-noskip",
                "-oac", (ac3Remux) ? "copy" : "lavc",
                audio.isAC3() ? "-fafmttag" : "-quiet", audio.isAC3() ? "0x2000" : "-quiet",
                "-lavcopts", "acodec=" + (configuration.isMencoderAc3Fixed() ? "ac3_fixed" : "ac3") + ":abitrate=" + CodecUtil.getAC3Bitrate(configuration, audio),
                "-af", "lavcresample=48000",
                "-srate", "48000",
                singleMediaAudio ? "-quiet" : "-aid", singleMediaAudio ? "-quiet" : ("" + audio.getId()),
                "-o", ffAudioPipe[i].getInputPipe()
              };
            }

            ffparams = new OutputParams(configuration);
            ffparams.maxBufferSize = 1;
            ffparams.stdin = params.stdin;
            ffAudio[i] = new ProcessWrapperImpl(ffmpegLPCMextract, ffparams);
          }
        }
View Full Code Here

      "-dvd-device",
      ProcessUtil.getShortFileNameIfWideChars(file.getAbsolutePath()),
      "dvd://" + title
    };

    OutputParams params = new OutputParams(configuration);
    params.maxBufferSize = 1;
    if (configuration.isDvdIsoThumbnails()) {
      try {
        params.workDir = configuration.getTempFolder();
      } catch (IOException e1) {
View Full Code Here

            boolean isFFmpegFontConfig = configuration.isFFmpegFontConfig();
            if (isFFmpegFontConfig) { // do not apply fontconfig to flowplayer subs
              configuration.setFFmpegFontConfig(false);
            }

            OutputParams p = new OutputParams(configuration);
            Player.setAudioAndSubs(r.getName(), r.getMedia(), p);
            if (p.sid !=null && p.sid.getType().isText()) {
              try {
                File subFile = SubtitleUtils.getSubtitles(r, r.getMedia(), p, configuration, SubtitleType.WEBVTT);
                LOGGER.debug("subFile " + subFile);
View Full Code Here

      "null",
      "-dvd-device",
      ProcessUtil.getShortFileNameIfWideChars(file.getAbsolutePath()),
      "dvd://1"
    };
    OutputParams params = new OutputParams(configuration);
    params.maxBufferSize = 1;
    params.log = true;
    final ProcessWrapperImpl pw = new ProcessWrapperImpl(cmd, params, true, false);
    Runnable r = new Runnable() {
      @Override
View Full Code Here

  }

  @Override
  public void parse(DLNAMediaInfo media, InputFile file, int type, RendererConfiguration renderer) {
    try {
      OutputParams params = new OutputParams(configuration);
      params.waitbeforestart = 1;
      params.minBufferSize = 1;
      params.maxBufferSize = 5;
      params.hidebuffer = true;
View Full Code Here

          // See which mime type the renderer prefers in case it supports the media
          String mimeType = defaultRenderer.getFormatConfiguration().match(child.media);
          if (mimeType != null) {
            // Media is streamable
            if (!configuration.isDisableSubtitles() && child.isSubsFile() && defaultRenderer.isSubtitlesStreamingSupported()) {
              OutputParams params = new OutputParams(configuration);
              Player.setAudioAndSubs(child.getSystemName(), child.media, params); // set proper subtitles in accordance with user setting
              if (params.sid.isExternal() && defaultRenderer.isExternalSubtitlesFormatSupported(params.sid)) {
                child.media_subtitle = params.sid;
                child.media_subtitle.setSubsStreamable(true);
                LOGGER.trace("Set media_subtitle");
              } else {
                LOGGER.trace("Did not set media_subtitle because the subtitle format is not supported by this renderer");
              }
            } else {
              LOGGER.trace("Did not set media_subtitle because configuration.isDisableSubtitles is true, this is not a subtitle, or the renderer does not support streaming subtitles");
            }

            if (!FormatConfiguration.MIMETYPE_AUTO.equals(mimeType)) {
              // Override with the preferred mime type of the renderer
              LOGGER.trace("Overriding detected mime type \"{}\" for file \"{}\" with renderer preferred mime type \"{}\"",
                  child.media.getMimeType(), child.getName(), mimeType);
              child.media.setMimeType(mimeType);
            }

            LOGGER.trace("File \"{}\" can be streamed with mime type \"{}\"", child.getName(), child.media.getMimeType());
          } else {
            // Media is transcodable
            LOGGER.trace("File \"{}\" can be transcoded", child.getName());
          }
        } else if (child.media != null && defaultRenderer != null) {
          LOGGER.trace("Did not check for media_subtitle for \"{}\" because {} does not use MediaInfo, we will check for it soon", child.getName(), defaultRenderer);
        }

        if (child.format != null) {
          String configurationSkipExtensions = configuration.getDisableTranscodeForExtensions();
          String rendererSkipExtensions = null;

          if (defaultRenderer != null) {
            rendererSkipExtensions = defaultRenderer.getStreamedExtensions();
          }

          // Should transcoding be skipped for this format?
          boolean skip = child.format.skip(configurationSkipExtensions, rendererSkipExtensions);
          skipTranscode = skip;

          if (skip) {
            LOGGER.trace("File \"{}\" will be forced to skip transcoding by configuration", child.getName());
          }

          // Determine transcoding possibilities if either
          //    - the format is known to be transcodable
          //    - we have media info (via parserV2, playback info, or a plugin)
          if (child.format.transcodable() || child.media != null) {
            if (child.media == null) {
              child.media = new DLNAMediaInfo();
            }

            // Try to determine a player to use for transcoding.
            Player player = null;

            // First, try to match a player from recently played folder or based on the name of the DLNAResource
            // or its parent. If the name ends in "[unique player id]", that player
            // is preferred.
            String name = getName();

            if (!configuration.isHideRecentlyPlayedFolder()) {
              player = child.player;
            } else {
              for (Player p : PlayerFactory.getPlayers()) {
                String end = "[" + p.id() + "]";

                if (name.endsWith(end)) {
                  nametruncate = name.lastIndexOf(end);
                  player = p;
                  LOGGER.trace("Selecting player based on name end");
                  break;
                } else if (parent != null && parent.getName().endsWith(end)) {
                  parent.nametruncate = parent.getName().lastIndexOf(end);
                  player = p;
                  LOGGER.trace("Selecting player based on parent name end");
                  break;
                }
              }
            }

            // If no preferred player could be determined from the name, try to
            // match a player based on media information and format.
            if (player == null) {
              player = PlayerFactory.getPlayer(child);
            }

            if (player != null && !allChildrenAreFolders) {
              String configurationForceExtensions = configuration.getForceTranscodeForExtensions();
              String rendererForceExtensions = null;

              if (defaultRenderer != null) {
                rendererForceExtensions = defaultRenderer.getTranscodedExtensions();
              }

              // Should transcoding be forced for this format?
              boolean forceTranscode = child.format.skip(configurationForceExtensions, rendererForceExtensions);

              if (forceTranscode) {
                LOGGER.trace("File \"{}\" will be forced to be transcoded by configuration", child.getName());
              }

              boolean hasEmbeddedSubs = false;
              boolean hasAnySubs = child.media.getSubtitleTracksList().size() > 0 || child.isSubsFile();
              boolean hasSubsToTranscode = false;

              if (!configuration.isDisableSubtitles() && hasAnySubs) {
                for (DLNAMediaSubtitle s : child.media.getSubtitleTracksList()) {
                  hasEmbeddedSubs = (hasEmbeddedSubs || s.isEmbedded());
                }

                if (!parserV2) {
                  if (child.isSubsFile() && defaultRenderer != null && defaultRenderer.isSubtitlesStreamingSupported()) {
                    OutputParams params = new OutputParams(configuration);
                    Player.setAudioAndSubs(child.getSystemName(), child.media, params); // set proper subtitles in accordance with user setting
                    if (params.sid.isExternal() && defaultRenderer.isExternalSubtitlesFormatSupported(params.sid)) {
                      child.media_subtitle = params.sid;
                      child.media_subtitle.setSubsStreamable(true);
                      LOGGER.trace("Set media_subtitle");
View Full Code Here

                   * know it will always be PS, but most renderers will not accept H.264
                   * inside MPEG-PS. Another option may be to always produce MPEG-TS
                   * instead and we should check if that will be OK for all renderers.
                   */
                  if (mediaRenderer.isAccurateDLNAOrgPN()) {
                    OutputParams params = new OutputParams(configuration);
                    Player.setAudioAndSubs(getSystemName(), media, params);
                    media_audio = params.aid;
                    media_subtitle = params.sid;
                    if (media_subtitle == null) {
                      LOGGER.trace("We do not want a subtitle for " + getName());
View Full Code Here

TOP

Related Classes of net.pms.io.OutputParams

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.