[Android] [PATCH 10/13] MediaInfo: use Media class

Jean-Baptiste Kempf jb at videolan.org
Thu Jan 15 20:19:00 CET 2015


OK

On 15 Jan, Thomas Guillem wrote :
> ---
>  .../videolan/vlc/gui/video/MediaInfoAdapter.java   | 43 +++++++++++-----------
>  .../videolan/vlc/gui/video/MediaInfoFragment.java  | 21 +++++++----
>  2 files changed, 35 insertions(+), 29 deletions(-)
> 
> diff --git a/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoAdapter.java b/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoAdapter.java
> index d234216..b2a9de7 100644
> --- a/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoAdapter.java
> +++ b/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoAdapter.java
> @@ -20,7 +20,7 @@
>  
>  package org.videolan.vlc.gui.video;
>  
> -import org.videolan.libvlc.TrackInfo;
> +import org.videolan.libvlc.Media;
>  import org.videolan.vlc.R;
>  
>  import android.content.Context;
> @@ -31,7 +31,7 @@ import android.view.ViewGroup;
>  import android.widget.ArrayAdapter;
>  import android.widget.TextView;
>  
> -public class MediaInfoAdapter extends ArrayAdapter<TrackInfo> {
> +public class MediaInfoAdapter extends ArrayAdapter<Media.Track> {
>  
>      public MediaInfoAdapter(Context context) {
>          super(context, 0);
> @@ -51,23 +51,23 @@ public class MediaInfoAdapter extends ArrayAdapter<TrackInfo> {
>          } else
>              holder = (ViewHolder) v.getTag();
>  
> -        TrackInfo track = getItem(position);
> +        Media.Track track = getItem(position);
>          String title;
>          StringBuilder textBuilder = new StringBuilder(1024);
>          Resources res = getContext().getResources();
> -        switch (track.Type)
> +        switch (track.type)
>          {
> -            case TrackInfo.TYPE_AUDIO:
> +            case Media.Track.Type.Audio:
>                  title = res.getString(R.string.track_audio);
>                  appendCommon(textBuilder, res, track);
> -                appendAudio(textBuilder, res, track);
> +                appendAudio(textBuilder, res, (Media.AudioTrack)track);
>                  break;
> -            case TrackInfo.TYPE_VIDEO:
> +            case Media.Track.Type.Video:
>                  title = res.getString(R.string.track_video);
>                  appendCommon(textBuilder, res, track);
> -                appendVideo(textBuilder, res, track);
> +                appendVideo(textBuilder, res, (Media.VideoTrack) track);
>                  break;
> -            case TrackInfo.TYPE_TEXT:
> +            case Media.Track.Type.Text:
>                  title = res.getString(R.string.track_text);
>                  appendCommon(textBuilder, res, track);
>                  break;
> @@ -81,22 +81,23 @@ public class MediaInfoAdapter extends ArrayAdapter<TrackInfo> {
>          return v;
>      }
>  
> -    private void appendCommon(StringBuilder textBuilder, Resources res, TrackInfo track) {
> -        textBuilder.append(res.getString(R.string.track_codec_info, track.Codec));
> -        if (track.Language != null && !track.Language.equalsIgnoreCase("und"))
> -            textBuilder.append(res.getString(R.string.track_language_info, track.Language));
> +    private void appendCommon(StringBuilder textBuilder, Resources res, Media.Track track) {
> +        textBuilder.append(res.getString(R.string.track_codec_info, track.codec));
> +        if (track.language != null && !track.language.equalsIgnoreCase("und"))
> +            textBuilder.append(res.getString(R.string.track_language_info, track.language));
>      }
>  
> -    private void appendAudio(StringBuilder textBuilder, Resources res, TrackInfo track) {
> -        textBuilder.append(res.getQuantityString(R.plurals.track_channels_info_quantity, track.Channels, track.Channels));
> -        textBuilder.append(res.getString(R.string.track_samplerate_info, track.Samplerate));
> +    private void appendAudio(StringBuilder textBuilder, Resources res, Media.AudioTrack track) {
> +        textBuilder.append(res.getQuantityString(R.plurals.track_channels_info_quantity, track.channels, track.channels));
> +        textBuilder.append(res.getString(R.string.track_samplerate_info, track.rate));
>      }
>  
> -    private void appendVideo(StringBuilder textBuilder, Resources res, TrackInfo track) {
> -        if( track.Width != 0 && track.Height != 0 )
> -            textBuilder.append(res.getString(R.string.track_resolution_info, track.Width, track.Height));
> -        if( !Float.isNaN(track.Framerate) )
> -            textBuilder.append(res.getString(R.string.track_framerate_info, track.Framerate));
> +    private void appendVideo(StringBuilder textBuilder, Resources res, Media.VideoTrack track) {
> +        final double framerate = track.frameRateNum / (double) track.frameRateDen;
> +        if( track.width != 0 && track.height != 0 )
> +            textBuilder.append(res.getString(R.string.track_resolution_info, track.width, track.height));
> +        if( !Double.isNaN(framerate) )
> +            textBuilder.append(res.getString(R.string.track_framerate_info, framerate));
>      }
>  
>      static class ViewHolder {
> diff --git a/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoFragment.java b/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoFragment.java
> index b56c64c..4dc40e5 100644
> --- a/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoFragment.java
> +++ b/vlc-android/src/org/videolan/vlc/gui/video/MediaInfoFragment.java
> @@ -26,6 +26,7 @@ import java.nio.ByteBuffer;
>  import org.videolan.libvlc.LibVLC;
>  import org.videolan.libvlc.LibVlcException;
>  import org.videolan.libvlc.LibVlcUtil;
> +import org.videolan.libvlc.Media;
>  import org.videolan.libvlc.TrackInfo;
>  import org.videolan.vlc.MediaHolder;
>  import org.videolan.vlc.MediaLibrary;
> @@ -68,7 +69,7 @@ public class MediaInfoFragment extends ListFragment {
>      private ImageButton mPlayButton;
>      private TextView mDelete;
>      private ImageView mSubtitles;
> -    private TrackInfo[] mTracks;
> +    private Media mMedia;
>      private MediaInfoAdapter mAdapter;
>      private final static int NEW_IMAGE = 0;
>      private final static int NEW_TEXT = 1;
> @@ -190,7 +191,9 @@ public class MediaInfoFragment extends ListFragment {
>              } catch (LibVlcException e) {
>                  return;
>              }
> -            mTracks = mLibVlc.readTracksInfo(mItem.getLocation());
> +            mMedia = new Media(mLibVlc, mItem.getLocation());
> +            mMedia.parse();
> +            mMedia.release();
>              int videoHeight = mItem.getHeight();
>              int videoWidth = mItem.getWidth();
>              if (videoWidth == 0 || videoHeight == 0)
> @@ -239,12 +242,14 @@ public class MediaInfoFragment extends ListFragment {
>  
>      private void updateText() {
>          boolean hasSubs = false;
> -        for (TrackInfo track : mTracks) {
> -            if (track.Type != TrackInfo.TYPE_META) {
> -                mAdapter.add(track);
> -                if (track.Type == TrackInfo.TYPE_TEXT)
> -                    hasSubs = true;
> -            }
> +        if (mMedia == null)
> +            return;
> +        final int trackCount = mMedia.getTrackCount();
> +        for (int i = 0; i < trackCount; ++i) {
> +            final Media.Track track = mMedia.getTrack(i);
> +            if (track.type == Media.Track.Type.Text)
> +                hasSubs = true;
> +            mAdapter.add(track);
>          }
>          if (mAdapter.isEmpty()) {
>              ((MainActivity) getActivity()).popSecondaryFragment();
> -- 
> 2.1.3
> 
> _______________________________________________
> Android mailing list
> Android at videolan.org
> https://mailman.videolan.org/listinfo/android

-- 
With my kindest regards,

-- 
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device


More information about the Android mailing list