title: Exoplayer throws Decoder initialisation exception for large mp4 files in android
body: <p>Iam using Exoplayer to play videos as a playlist continuously in android . When I play low quality mp4 videos it works fine but when i try to play higher quality mp4  videos after playing one or two videos in the playlist the screen doesnot display anything and the log gives the following exception </p>
  
  <p>com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.amlogic.avc.decoder.awesome, MediaFormat(video/avc, 198826, 1920, 1080, -1.0, -1, -1, -1, -1, -1)</p>
  
  <p>Even if i loop the same high quality video the first time it plays and then second time this exception is thrown . when the video size is more than 80mb this exception is thrown .is it some buffer size issue ? can someone please guide me . thankyou very much </p>
  
  <pre><code>@Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.adplayertexture);   
      AdplayerTexture=(TextureView)findViewById(R.id.AdPlayerTexture);
      AdplayerTexture.setBackgroundColor(Color.BLACK);
          AdplayerTexture.setSurfaceTextureListener(this);
    }
  @Override
  public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
      int height) {
  
   AdPlayerSurface = new Surface( surface); 
   playMedia(AdPlayerSurface);
  }
  
  
  private void playMedia(Surface surface){
  mediaplayer=new ExoPlayer();
  mediaplayer.play(this,Videopathlist[CurrentVideoIndex],surface;
   mediaplayer.addListener(this);   
     }
  
  @Override
  public void onStateChanged(boolean playWhenReady, int playbackState) {
  
  if (playbackState == ExoPlayer.STATE_ENDED) {
  //releasing the resources   
      mediaplayer.DestroyPlayer();
  AdPlayerSurface.release();
  
  AdPlayerSurface=new Surface(AdplayerTexture.getSurfaceTexture());
      CurrentVideoIndex++;
  playMedia(AdPlayerSurface);
  }
  </code></pre>
  
  <p>this is the function play() in root2mediaplayer class</p>
  
  <pre><code>public void playMedia(Activity playerActivity,String mediapath,final long Position,Surface mediasurface){
      String Systemroot = Environment.getExternalStoragePublicDirectory(
              Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
  try{
      File myFile=new File(Systemroot + java.io.File.separator + "Videos"
              + java.io.File.separator
              + mediapath);
      Uri uri = Uri.fromFile(myFile);
      final int numRenderers = 2;
  
      SampleSource sampleSource = 
              new FrameworkSampleSource(playerActivity, uri, /* headers */ null, numRenderers);
  
      // Build the track renderers
      TrackRenderer    videoRenderer = new MediaCodecVideoTrackRenderer(sampleSource, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT);
  
      TrackRenderer    audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource);
  
      // Build the ExoPlayer and start playback
      MoviePlayer = ExoPlayer.Factory.newInstance(numRenderers);
      MoviePlayer.prepare(videoRenderer, audioRenderer);
  
      MoviePlayer.addListener(this);
      // Pass the surface to the video renderer.
      MoviePlayer.sendMessage(videoRenderer, MediaCodecVideoTrackRenderer.MSG_SET_SURFACE, mediasurface);
  
              MoviePlayer.seekTo(Position);
              MoviePlayer.setPlayWhenReady(true);
  }catch(Exception e){
  
  e.printStackTrace();
  FileLog("exception in mediaplayer");
  }
  </code></pre>